Record a battle action
submit_battle_actionAppends a legal battle command only when expectedSeq matches the current log. Requires mcp:write.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | ||
| command | Yes | ||
| expectedSeq | Yes |
submit_battle_actionAppends a legal battle command only when expectedSeq matches the current log. Requires mcp:write.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | ||
| command | Yes | ||
| expectedSeq | Yes |
Changes observed during successful MCP inspections.
Input schema / properties / command / anyOfPrevious value: -[
- {
- "oneOf": [
- {
- "properties": {
- "cardKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "select-mission",
- "type": "string"
- },
- "occurrence": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "oneOf": [
- {
- "properties": {
- "fallback": {
- "type": "boolean"
- },
- "kind": {
- "const": "punishment",
- "type": "string"
- },
- "qualified": {
- "type": "boolean"
- },
- "unavailable": {
- "const": true,
- "type": "boolean"
- },
- "units": {
- "items": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "units",
- "fallback",
- "qualified"
- ],
- "type": "object"
- },
- {
- "properties": {
- "guards": {
- "items": {
- "properties": {
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "unit": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- }
- },
- "required": [
- "objective",
- "unit"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "kind": {
- "const": "guards",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "guards"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "tempting-target",
- "type": "string"
- },
- "noMansLand": {
- "type": "boolean"
- },
- "notHome": {
- "type": "boolean"
- },
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "objective",
- "notHome",
- "noMansLand"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "beacon",
- "type": "string"
- },
- "note": {
- "maxLength": 200,
- "type": "string"
- },
- "unit": {
- "anyOf": [
- {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "unit",
- "note"
- ],
- "type": "object"
- },
- {
- "properties": {
- "allEligible": {
- "type": "boolean"
- },
- "areas": {
- "items": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 5,
- "type": "array"
- },
- "kind": {
- "const": "locate-and-deny",
- "type": "string"
- },
- "outsideZone": {
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "areas",
- "outsideZone",
- "allEligible"
- ],
- "type": "object"
- },
- {
- "properties": {
- "controlled": {
- "type": "boolean"
- },
- "kind": {
- "const": "sensor-sweep",
- "type": "string"
- },
- "marker": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "playerId"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "marker",
- "controlled"
- ],
- "type": "object"
- },
- {
- "properties": {
- "consecrations": {
- "items": {
- "properties": {
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "unit": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- }
- },
- "required": [
- "objective",
- "unit"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "kind": {
- "const": "consecrate",
- "type": "string"
- },
- "notHome": {
- "type": "boolean"
- },
- "qualified": {
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "consecrations",
- "qualified",
- "notHome"
- ],
- "type": "object"
- }
- ]
- }
- },
- "required": [
- "kind",
- "cardKey",
- "occurrence",
- "selection"
- ],
- "type": "object"
- },
- {
- "properties": {
- "clockLimitMinutes": {
- "anyOf": [
- {
- "maximum": 300,
- "minimum": 5,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "kind": {
- "const": "configure-battle",
- "type": "string"
- },
- "limit": {
- "anyOf": [
- {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "manual": {
- "type": "boolean"
- },
- "missionPackId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerCount": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "teamBattle": {
- "type": "boolean"
- },
- "terrainLayoutId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "twistId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "limit",
- "missionPackId",
- "terrainLayoutId",
- "twistId",
- "clockLimitMinutes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reset-setup",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "detach-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "dispositions": {
- "items": {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "side",
- "disposition"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "type": "array"
- },
- "eventToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "lock-league-rosters",
- "type": "string"
- },
- "leagueToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "leagueToken"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-setup-step",
- "type": "string"
- },
- "step": {
- "maximum": 9,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "step"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-attacker",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "attackerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-first-turn",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-side-disposition",
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "side",
- "disposition"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "attach-roster",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "prep": {
- "anyOf": [
- {
- "properties": {
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "tactical",
- "fixed"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "roster": {
- "properties": {
- "built": {
- "properties": {
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "detachment": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachmentIds": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "detachmentPointBudget": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachments": {
- "items": {
- "properties": {
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "points": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "points"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- },
- "disposition": {
- "anyOf": [
- {
- "maxLength": 64,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "dispositions": {
- "items": {
- "maxLength": 64,
- "type": "string"
- },
- "maxItems": 16,
- "type": "array"
- },
- "edition": {
- "properties": {
- "description": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "id": {
- "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "slug": {
- "maxLength": 80,
- "minLength": 1,
- "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
- "type": "string"
- },
- "status": {
- "enum": [
- "preview",
- "released",
- "retired"
- ],
- "type": "string"
- }
- },
- "required": [
- "id",
- "name",
- "status"
- ],
- "type": "object"
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "picks": {
- "items": {
- "properties": {
- "attachedTo": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "choices": {
- "additionalProperties": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 60,
- "minimum": 1,
- "type": "integer"
- },
- "note": {
- "maxLength": 500,
- "type": "string"
- },
- "spreads": {
- "additionalProperties": {
- "additionalProperties": {
- "maximum": 60,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 64,
- "type": "string"
- },
- "type": "object"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "toggles": {
- "additionalProperties": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "entryId"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "pointsBudget": {
- "maximum": 10000,
- "minimum": 500,
- "type": "integer"
- },
- "revision": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "strategicReserveLimit": {
- "maximum": 5000,
- "minimum": 0,
- "type": "integer"
- },
- "units": {
- "items": {
- "properties": {
- "attachedTo": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "enhancements": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "formationOptions": {
- "items": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "maxItems": 4,
- "type": "array"
- },
- "group": {
- "enum": [
- "epic-hero",
- "character",
- "battleline",
- "infantry",
- "swarm",
- "mounted",
- "beast",
- "monster",
- "vehicle",
- "drone",
- "transport",
- "fortification",
- "other"
- ],
- "type": "string"
- },
- "joined": {
- "items": {
- "properties": {
- "label": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "label",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "keywords": {
- "items": {
- "maxLength": 100,
- "type": "string"
- },
- "maxItems": 60,
- "type": "array"
- },
- "models": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "note": {
- "maxLength": 500,
- "type": "string"
- },
- "points": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "prebattleRules": {
- "items": {
- "enum": [
- "infiltrators",
- "scouts"
- ],
- "type": "string"
- },
- "maxItems": 2,
- "type": "array"
- },
- "strategicReserveExempt": {
- "type": "boolean"
- },
- "transport": {
- "type": "boolean"
- },
- "transportCapacity": {
- "properties": {
- "alternatives": {
- "items": {
- "maxLength": 200,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "conditions": {
- "items": {
- "properties": {
- "capacity": {
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "integer"
- },
- "carries": {
- "maxLength": 200,
- "type": "string"
- },
- "maxWounds": {
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "integer"
- },
- "wargear": {
- "maxLength": 200,
- "type": "string"
- }
- },
- "required": [
- "capacity",
- "carries",
- "wargear"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "excluded": {
- "items": {
- "properties": {
- "except": {
- "maxLength": 200,
- "type": "string"
- },
- "keywords": {
- "maxLength": 200,
- "type": "string"
- }
- },
- "required": [
- "keywords"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "instead": {
- "anyOf": [
- {
- "properties": {
- "capacity": {
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "integer"
- },
- "carries": {
- "maxLength": 200,
- "type": "string"
- },
- "maxWounds": {
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "integer"
- }
- },
- "required": [
- "capacity",
- "carries"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "main": {
- "properties": {
- "capacity": {
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "integer"
- },
- "carries": {
- "maxLength": 200,
- "type": "string"
- },
- "maxWounds": {
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "integer"
- }
- },
- "required": [
- "capacity",
- "carries"
- ],
- "type": "object"
- },
- "pools": {
- "items": {
- "properties": {
- "capacity": {
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "integer"
- },
- "carries": {
- "maxLength": 200,
- "type": "string"
- },
- "maxWounds": {
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "integer"
- }
- },
- "required": [
- "capacity",
- "carries"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "space": {
- "items": {
- "properties": {
- "keywords": {
- "maxLength": 200,
- "type": "string"
- },
- "moreWoundsThan": {
- "maximum": 1000,
- "minimum": 0,
- "type": "integer"
- },
- "size": {
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "integer"
- }
- },
- "required": [
- "size"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- }
- },
- "required": [
- "main",
- "instead",
- "conditions",
- "pools",
- "alternatives",
- "excluded",
- "space"
- ],
- "type": "object"
- },
- "transportRule": {
- "maxLength": 4000,
- "type": "string"
- },
- "upgrades": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "wargear": {
- "items": {
- "properties": {
- "count": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "count"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "warlord": {
- "type": "boolean"
- },
- "warlordEligible": {
- "type": "boolean"
- },
- "wounds": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "key",
- "name",
- "points",
- "models"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "waivedRules": {
- "items": {
- "enum": [
- "points-limit",
- "detachments",
- "detachment-points",
- "kotc-infantry",
- "kotc-warlord",
- "kotc-epic-heroes",
- "kotc-toughness",
- "kotc-datasheet-copies"
- ],
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- }
- },
- "required": [
- "catalogueId",
- "revision",
- "limit",
- "detachment",
- "disposition",
- "units"
- ],
- "type": "object"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "lentBy": {
- "properties": {
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 48,
- "type": "string"
- }
- },
- "required": [
- "id",
- "name"
- ],
- "type": "object"
- },
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "reminders": {
- "items": {
- "properties": {
- "ability": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "description": {
- "maxLength": 10000,
- "type": "string"
- },
- "key": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "timings": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "phase-start",
- "phase-end"
- ],
- "type": "string"
- },
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "any"
- ],
- "type": "string"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "turn-start",
- "turn-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "round-start",
- "round-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "const": "either",
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "unit": {
- "properties": {
- "index": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "index",
- "name"
- ],
- "type": "object"
- },
- "whileDestroyed": {
- "type": "boolean"
- }
- },
- "required": [
- "key",
- "ability",
- "description",
- "timings"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "remindersEnabled": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 20000,
- "type": "string"
- }
- },
- "required": [
- "name",
- "text"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "roster"
- ],
- "type": "object"
- },
- {
- "properties": {
- "destroyed": {
- "type": "boolean"
- },
- "kind": {
- "const": "set-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "destroyed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-prep",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "tactical",
- "fixed"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "properties": {
- "deployed": {
- "type": "boolean"
- },
- "kind": {
- "const": "deploy-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "deployed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "formation": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "kind": {
- "const": "set-unit-formation",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "transportKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "formation"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-painted",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "painted"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "wound-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "damage-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-deployment",
- "type": "string"
- },
- "patternId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "patternId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-battlefield",
- "type": "string"
- },
- "patternId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "terrainLayoutId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "patternId",
- "terrainLayoutId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "use-stratagem",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "kind": {
- "const": "use-new-orders",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "secondaryKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "stratagemKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "stratagemKey",
- "secondaryKey",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "score-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "score-settlement",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "scores": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "category": {
- "const": "primary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "final": {
- "properties": {
- "claims": {
- "items": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "maxItems": 20,
- "type": "array"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "claims",
- "delta"
- ],
- "type": "object"
- }
- },
- "required": [
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "const": "secondary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "const": "achieved",
- "type": "string"
- }
- },
- "required": [
- "category",
- "key",
- "delta"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 31,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "scores"
- ],
- "type": "object"
- },
- {
- "properties": {
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-secondary-status",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "active",
- "achieved",
- "discarded",
- "returned"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "status"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondaries",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "minItems": 1,
- "type": "array"
- },
- "selected": {
- "const": true,
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "secondaries"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-draw",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-scoring",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "select-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reveal-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "begin-battle",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "adjust-cp",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "gainCp": {
- "type": "boolean"
- },
- "keys": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "kind": {
- "const": "resolve-tactical-hand",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "enum": [
- "primary",
- "secondary"
- ],
- "type": "string"
- },
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "score",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "correct-player",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "resource": {
- "enum": [
- "cp",
- "primary",
- "secondary"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "playerId",
- "resource",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "settle-opponent-turn",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "request-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "cancel-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "pause-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "resume-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "concededBy": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "end-battle",
- "type": "string"
- },
- "reason": {
- "enum": [
- "completed",
- "finished-early",
- "conceded"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reopen-battle",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "add-note",
- "type": "string"
- },
- "text": {
- "maxLength": 500,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "text"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "undo",
- "type": "string"
- },
- "target": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- }
- ]
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "attach-saved-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "rosterId"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "properties": {
+ "cardKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "select-mission",
+ "type": "string"
+ },
+ "occurrence": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "oneOf": [
+ {
+ "properties": {
+ "fallback": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "punishment",
+ "type": "string"
+ },
+ "qualified": {
+ "type": "boolean"
+ },
+ "unavailable": {
+ "const": true,
+ "type": "boolean"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "units",
+ "fallback",
+ "qualified"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "guards": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "guards",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "guards"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "tempting-target",
+ "type": "string"
+ },
+ "noMansLand": {
+ "type": "boolean"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "objective",
+ "notHome",
+ "noMansLand"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "beacon",
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "unit": {
+ "anyOf": [
+ {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "unit",
+ "note"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "allEligible": {
+ "type": "boolean"
+ },
+ "areas": {
+ "items": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 5,
+ "type": "array"
+ },
+ "kind": {
+ "const": "locate-and-deny",
+ "type": "string"
+ },
+ "outsideZone": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "areas",
+ "outsideZone",
+ "allEligible"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "controlled": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "sensor-sweep",
+ "type": "string"
+ },
+ "marker": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "playerId"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "marker",
+ "controlled"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "consecrations": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "consecrate",
+ "type": "string"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "qualified": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "consecrations",
+ "qualified",
+ "notHome"
+ ],
+ "type": "object"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "cardKey",
+ "occurrence",
+ "selection"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "clockLimitMinutes": {
+ "anyOf": [
+ {
+ "maximum": 300,
+ "minimum": 5,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "kind": {
+ "const": "configure-battle",
+ "type": "string"
+ },
+ "limit": {
+ "anyOf": [
+ {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "manual": {
+ "type": "boolean"
+ },
+ "missionPackId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerCount": {
+ "anyOf": [
+ {
+ "const": 2,
+ "type": "number"
+ },
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "teamBattle": {
+ "type": "boolean"
+ },
+ "terrainLayoutId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "twistId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "limit",
+ "missionPackId",
+ "terrainLayoutId",
+ "twistId",
+ "clockLimitMinutes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reset-setup",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "detach-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "dispositions": {
+ "items": {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "eventToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "lock-league-rosters",
+ "type": "string"
+ },
+ "leagueToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "leagueToken"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-setup-step",
+ "type": "string"
+ },
+ "step": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "step"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-attacker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "attackerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-first-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-side-disposition",
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "attach-roster",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "tactical",
+ "fixed"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roster": {
+ "properties": {
+ "built": {
+ "properties": {
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachment": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "detachmentPointBudget": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachments": {
+ "items": {
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "points": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "points"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "dispositions": {
+ "items": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "maxItems": 16,
+ "type": "array"
+ },
+ "edition": {
+ "properties": {
+ "description": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "id": {
+ "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "slug": {
+ "maxLength": 80,
+ "minLength": 1,
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "preview",
+ "released",
+ "retired"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "status"
+ ],
+ "type": "object"
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "note": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "pointsBudget": {
+ "maximum": 10000,
+ "minimum": 500,
+ "type": "integer"
+ },
+ "revision": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategicReserveLimit": {
+ "maximum": 5000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "enhancements": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "formationOptions": {
+ "items": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "group": {
+ "enum": [
+ "epic-hero",
+ "character",
+ "battleline",
+ "infantry",
+ "swarm",
+ "mounted",
+ "beast",
+ "monster",
+ "vehicle",
+ "drone",
+ "transport",
+ "fortification",
+ "other"
+ ],
+ "type": "string"
+ },
+ "joined": {
+ "items": {
+ "properties": {
+ "label": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "keywords": {
+ "items": {
+ "maxLength": 100,
+ "type": "string"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "models": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "points": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prebattleRules": {
+ "items": {
+ "enum": [
+ "infiltrators",
+ "scouts"
+ ],
+ "type": "string"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "strategicReserveExempt": {
+ "type": "boolean"
+ },
+ "transport": {
+ "type": "boolean"
+ },
+ "transportCapacity": {
+ "properties": {
+ "alternatives": {
+ "items": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "conditions": {
+ "items": {
+ "properties": {
+ "capacity": {
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "integer"
+ },
+ "carries": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "maxWounds": {
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "integer"
+ },
+ "wargear": {
+ "maxLength": 200,
+ "type": "string"
+ }
+ },
+ "required": [
+ "capacity",
+ "carries",
+ "wargear"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "excluded": {
+ "items": {
+ "properties": {
+ "except": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "keywords": {
+ "maxLength": 200,
+ "type": "string"
+ }
+ },
+ "required": [
+ "keywords"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "instead": {
+ "anyOf": [
+ {
+ "properties": {
+ "capacity": {
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "integer"
+ },
+ "carries": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "maxWounds": {
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "capacity",
+ "carries"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "main": {
+ "properties": {
+ "capacity": {
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "integer"
+ },
+ "carries": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "maxWounds": {
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "capacity",
+ "carries"
+ ],
+ "type": "object"
+ },
+ "pools": {
+ "items": {
+ "properties": {
+ "capacity": {
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "integer"
+ },
+ "carries": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "maxWounds": {
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "capacity",
+ "carries"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "space": {
+ "items": {
+ "properties": {
+ "keywords": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "moreWoundsThan": {
+ "maximum": 1000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "size": {
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "size"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ }
+ },
+ "required": [
+ "main",
+ "instead",
+ "conditions",
+ "pools",
+ "alternatives",
+ "excluded",
+ "space"
+ ],
+ "type": "object"
+ },
+ "transportRule": {
+ "maxLength": 4000,
+ "type": "string"
+ },
+ "upgrades": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "wargear": {
+ "items": {
+ "properties": {
+ "count": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "count"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "warlord": {
+ "type": "boolean"
+ },
+ "warlordEligible": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "points",
+ "models"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "catalogueId",
+ "revision",
+ "limit",
+ "detachment",
+ "disposition",
+ "units"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "lentBy": {
+ "properties": {
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 48,
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name"
+ ],
+ "type": "object"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "reminders": {
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "any"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "round-start",
+ "round-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "const": "either",
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ },
+ "whileDestroyed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 20000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "text"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "roster"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "destroyed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "set-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "destroyed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-prep",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "tactical",
+ "fixed"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "deployed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "deploy-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "deployed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "formation": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-unit-formation",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "transportKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "formation"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-painted",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "painted"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "wound-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "damage-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-deployment",
+ "type": "string"
+ },
+ "patternId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "patternId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-battlefield",
+ "type": "string"
+ },
+ "patternId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "terrainLayoutId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "patternId",
+ "terrainLayoutId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "use-stratagem",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "use-new-orders",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "secondaryKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "stratagemKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagemKey",
+ "secondaryKey",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "score-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "score-settlement",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "scores": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "category": {
+ "const": "primary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "final": {
+ "properties": {
+ "claims": {
+ "items": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "claims",
+ "delta"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "const": "secondary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "const": "achieved",
+ "type": "string"
+ }
+ },
+ "required": [
+ "category",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 31,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "scores"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-secondary-status",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "achieved",
+ "discarded",
+ "returned"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondaries",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "minItems": 1,
+ "type": "array"
+ },
+ "selected": {
+ "const": true,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-draw",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-scoring",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "select-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reveal-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "begin-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "adjust-cp",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "gainCp": {
+ "type": "boolean"
+ },
+ "keys": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "resolve-tactical-hand",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "score",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "correct-player",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "resource": {
+ "enum": [
+ "cp",
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "playerId",
+ "resource",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "settle-opponent-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "request-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "cancel-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "pause-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "resume-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "concededBy": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "end-battle",
+ "type": "string"
+ },
+ "reason": {
+ "enum": [
+ "completed",
+ "finished-early",
+ "conceded"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reopen-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "add-note",
+ "type": "string"
+ },
+ "text": {
+ "maxLength": 500,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "text"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "undo",
+ "type": "string"
+ },
+ "target": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "target"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "attach-saved-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "rosterId"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "draft": {
+ "properties": {
+ "borrowedDetachmentId": {
+ "anyOf": [
+ {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "optionalRules": {
+ "items": {
+ "enum": [
+ "kotc-borrowed-disposition"
+ ],
+ "type": "string"
+ },
+ "maxItems": 1,
+ "type": "array"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "note": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "pointsBudget": {
+ "anyOf": [
+ {
+ "maximum": 10000,
+ "minimum": 500,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "reminders": {
+ "default": [],
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "any"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "round-start",
+ "round-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "const": "either",
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ },
+ "whileDestroyed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "default": true,
+ "type": "boolean"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "source": {
+ "default": "editable",
+ "enum": [
+ "legacy",
+ "editable",
+ "praetorium",
+ "battlebase",
+ "newrecruit",
+ "roster-file"
+ ],
+ "type": "string"
+ },
+ "visibility": {
+ "default": "private",
+ "enum": [
+ "private",
+ "unlisted",
+ "public"
+ ],
+ "type": "string"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "name",
+ "catalogueId",
+ "detachmentIds",
+ "disposition",
+ "limit",
+ "picks",
+ "prep"
+ ],
+ "type": "object"
+ },
+ "kind": {
+ "const": "attach-draft-roster",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "draft"
+ ],
+ "type": "object"
+ }
+]Input schema / properties / command / anyOfPrevious value: -[
- {
- "oneOf": [
- {
- "properties": {
- "cardKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "select-mission",
- "type": "string"
- },
- "occurrence": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "oneOf": [
- {
- "properties": {
- "fallback": {
- "type": "boolean"
- },
- "kind": {
- "const": "punishment",
- "type": "string"
- },
- "qualified": {
- "type": "boolean"
- },
- "unavailable": {
- "const": true,
- "type": "boolean"
- },
- "units": {
- "items": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "units",
- "fallback",
- "qualified"
- ],
- "type": "object"
- },
- {
- "properties": {
- "guards": {
- "items": {
- "properties": {
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "unit": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- }
- },
- "required": [
- "objective",
- "unit"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "kind": {
- "const": "guards",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "guards"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "tempting-target",
- "type": "string"
- },
- "noMansLand": {
- "type": "boolean"
- },
- "notHome": {
- "type": "boolean"
- },
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "objective",
- "notHome",
- "noMansLand"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "beacon",
- "type": "string"
- },
- "note": {
- "maxLength": 200,
- "type": "string"
- },
- "unit": {
- "anyOf": [
- {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "unit",
- "note"
- ],
- "type": "object"
- },
- {
- "properties": {
- "allEligible": {
- "type": "boolean"
- },
- "areas": {
- "items": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 5,
- "type": "array"
- },
- "kind": {
- "const": "locate-and-deny",
- "type": "string"
- },
- "outsideZone": {
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "areas",
- "outsideZone",
- "allEligible"
- ],
- "type": "object"
- },
- {
- "properties": {
- "controlled": {
- "type": "boolean"
- },
- "kind": {
- "const": "sensor-sweep",
- "type": "string"
- },
- "marker": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "playerId"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "marker",
- "controlled"
- ],
- "type": "object"
- },
- {
- "properties": {
- "consecrations": {
- "items": {
- "properties": {
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "unit": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- }
- },
- "required": [
- "objective",
- "unit"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "kind": {
- "const": "consecrate",
- "type": "string"
- },
- "notHome": {
- "type": "boolean"
- },
- "qualified": {
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "consecrations",
- "qualified",
- "notHome"
- ],
- "type": "object"
- }
- ]
- }
- },
- "required": [
- "kind",
- "cardKey",
- "occurrence",
- "selection"
- ],
- "type": "object"
- },
- {
- "properties": {
- "clockLimitMinutes": {
- "anyOf": [
- {
- "maximum": 300,
- "minimum": 5,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "kind": {
- "const": "configure-battle",
- "type": "string"
- },
- "limit": {
- "anyOf": [
- {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "manual": {
- "type": "boolean"
- },
- "missionPackId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerCount": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "teamBattle": {
- "type": "boolean"
- },
- "terrainLayoutId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "twistId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "limit",
- "missionPackId",
- "terrainLayoutId",
- "twistId",
- "clockLimitMinutes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reset-setup",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "detach-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "dispositions": {
- "items": {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "side",
- "disposition"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "type": "array"
- },
- "eventToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "lock-league-rosters",
- "type": "string"
- },
- "leagueToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "leagueToken"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-setup-step",
- "type": "string"
- },
- "step": {
- "maximum": 9,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "step"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-attacker",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "attackerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-first-turn",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-side-disposition",
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "side",
- "disposition"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "attach-roster",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "prep": {
- "anyOf": [
- {
- "properties": {
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "tactical",
- "fixed"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "roster": {
- "properties": {
- "built": {
- "properties": {
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "detachment": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachmentIds": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "detachmentPointBudget": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachments": {
- "items": {
- "properties": {
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "points": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "points"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- },
- "disposition": {
- "anyOf": [
- {
- "maxLength": 64,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "dispositions": {
- "items": {
- "maxLength": 64,
- "type": "string"
- },
- "maxItems": 16,
- "type": "array"
- },
- "edition": {
- "properties": {
- "description": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "id": {
- "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "slug": {
- "maxLength": 80,
- "minLength": 1,
- "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
- "type": "string"
- },
- "status": {
- "enum": [
- "preview",
- "released",
- "retired"
- ],
- "type": "string"
- }
- },
- "required": [
- "id",
- "name",
- "status"
- ],
- "type": "object"
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "picks": {
- "items": {
- "properties": {
- "attachedTo": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "choices": {
- "additionalProperties": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 60,
- "minimum": 1,
- "type": "integer"
- },
- "note": {
- "maxLength": 500,
- "type": "string"
- },
- "spreads": {
- "additionalProperties": {
- "additionalProperties": {
- "maximum": 60,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 64,
- "type": "string"
- },
- "type": "object"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "toggles": {
- "additionalProperties": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "entryId"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "pointsBudget": {
- "maximum": 10000,
- "minimum": 500,
- "type": "integer"
- },
- "revision": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "strategicReserveLimit": {
- "maximum": 5000,
- "minimum": 0,
- "type": "integer"
- },
- "units": {
- "items": {
- "properties": {
- "attachedTo": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "enhancements": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "formationOptions": {
- "items": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "maxItems": 4,
- "type": "array"
- },
- "group": {
- "enum": [
- "epic-hero",
- "character",
- "battleline",
- "infantry",
- "swarm",
- "mounted",
- "beast",
- "monster",
- "vehicle",
- "drone",
- "transport",
- "fortification",
- "other"
- ],
- "type": "string"
- },
- "joined": {
- "items": {
- "properties": {
- "label": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "label",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "keywords": {
- "items": {
- "maxLength": 100,
- "type": "string"
- },
- "maxItems": 60,
- "type": "array"
- },
- "models": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "note": {
- "maxLength": 500,
- "type": "string"
- },
- "points": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "prebattleRules": {
- "items": {
- "enum": [
- "infiltrators",
- "scouts"
- ],
- "type": "string"
- },
- "maxItems": 2,
- "type": "array"
- },
- "strategicReserveExempt": {
- "type": "boolean"
- },
- "transport": {
- "type": "boolean"
- },
- "transportRule": {
- "maxLength": 4000,
- "type": "string"
- },
- "upgrades": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "wargear": {
- "items": {
- "properties": {
- "count": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "count"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "warlord": {
- "type": "boolean"
- },
- "warlordEligible": {
- "type": "boolean"
- },
- "wounds": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "key",
- "name",
- "points",
- "models"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "waivedRules": {
- "items": {
- "enum": [
- "points-limit",
- "detachments",
- "detachment-points",
- "kotc-infantry",
- "kotc-warlord",
- "kotc-epic-heroes",
- "kotc-toughness",
- "kotc-datasheet-copies"
- ],
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- }
- },
- "required": [
- "catalogueId",
- "revision",
- "limit",
- "detachment",
- "disposition",
- "units"
- ],
- "type": "object"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "lentBy": {
- "properties": {
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 48,
- "type": "string"
- }
- },
- "required": [
- "id",
- "name"
- ],
- "type": "object"
- },
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "reminders": {
- "items": {
- "properties": {
- "ability": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "description": {
- "maxLength": 10000,
- "type": "string"
- },
- "key": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "timings": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "phase-start",
- "phase-end"
- ],
- "type": "string"
- },
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "any"
- ],
- "type": "string"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "turn-start",
- "turn-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "round-start",
- "round-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "const": "either",
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "unit": {
- "properties": {
- "index": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "index",
- "name"
- ],
- "type": "object"
- },
- "whileDestroyed": {
- "type": "boolean"
- }
- },
- "required": [
- "key",
- "ability",
- "description",
- "timings"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "remindersEnabled": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 20000,
- "type": "string"
- }
- },
- "required": [
- "name",
- "text"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "roster"
- ],
- "type": "object"
- },
- {
- "properties": {
- "destroyed": {
- "type": "boolean"
- },
- "kind": {
- "const": "set-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "destroyed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-prep",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "tactical",
- "fixed"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "properties": {
- "deployed": {
- "type": "boolean"
- },
- "kind": {
- "const": "deploy-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "deployed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "formation": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "kind": {
- "const": "set-unit-formation",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "transportKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "formation"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-painted",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "painted"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "wound-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "damage-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-deployment",
- "type": "string"
- },
- "patternId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "patternId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-battlefield",
- "type": "string"
- },
- "patternId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "terrainLayoutId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "patternId",
- "terrainLayoutId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "use-stratagem",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "kind": {
- "const": "use-new-orders",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "secondaryKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "stratagemKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "stratagemKey",
- "secondaryKey",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "score-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "score-settlement",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "scores": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "category": {
- "const": "primary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "final": {
- "properties": {
- "claims": {
- "items": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "maxItems": 20,
- "type": "array"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "claims",
- "delta"
- ],
- "type": "object"
- }
- },
- "required": [
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "const": "secondary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "const": "achieved",
- "type": "string"
- }
- },
- "required": [
- "category",
- "key",
- "delta"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 31,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "scores"
- ],
- "type": "object"
- },
- {
- "properties": {
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-secondary-status",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "active",
- "achieved",
- "discarded",
- "returned"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "status"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondaries",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "minItems": 1,
- "type": "array"
- },
- "selected": {
- "const": true,
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "secondaries"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-draw",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-scoring",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "select-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reveal-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "begin-battle",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "adjust-cp",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "gainCp": {
- "type": "boolean"
- },
- "keys": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "kind": {
- "const": "resolve-tactical-hand",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "enum": [
- "primary",
- "secondary"
- ],
- "type": "string"
- },
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "score",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "correct-player",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "resource": {
- "enum": [
- "cp",
- "primary",
- "secondary"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "playerId",
- "resource",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "settle-opponent-turn",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "request-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "cancel-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "pause-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "resume-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "concededBy": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "end-battle",
- "type": "string"
- },
- "reason": {
- "enum": [
- "completed",
- "finished-early",
- "conceded"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reopen-battle",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "add-note",
- "type": "string"
- },
- "text": {
- "maxLength": 500,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "text"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "undo",
- "type": "string"
- },
- "target": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- }
- ]
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "attach-saved-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "rosterId"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "properties": {
+ "cardKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "select-mission",
+ "type": "string"
+ },
+ "occurrence": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "oneOf": [
+ {
+ "properties": {
+ "fallback": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "punishment",
+ "type": "string"
+ },
+ "qualified": {
+ "type": "boolean"
+ },
+ "unavailable": {
+ "const": true,
+ "type": "boolean"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "units",
+ "fallback",
+ "qualified"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "guards": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "guards",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "guards"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "tempting-target",
+ "type": "string"
+ },
+ "noMansLand": {
+ "type": "boolean"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "objective",
+ "notHome",
+ "noMansLand"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "beacon",
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "unit": {
+ "anyOf": [
+ {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "unit",
+ "note"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "allEligible": {
+ "type": "boolean"
+ },
+ "areas": {
+ "items": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 5,
+ "type": "array"
+ },
+ "kind": {
+ "const": "locate-and-deny",
+ "type": "string"
+ },
+ "outsideZone": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "areas",
+ "outsideZone",
+ "allEligible"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "controlled": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "sensor-sweep",
+ "type": "string"
+ },
+ "marker": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "playerId"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "marker",
+ "controlled"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "consecrations": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "consecrate",
+ "type": "string"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "qualified": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "consecrations",
+ "qualified",
+ "notHome"
+ ],
+ "type": "object"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "cardKey",
+ "occurrence",
+ "selection"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "clockLimitMinutes": {
+ "anyOf": [
+ {
+ "maximum": 300,
+ "minimum": 5,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "kind": {
+ "const": "configure-battle",
+ "type": "string"
+ },
+ "limit": {
+ "anyOf": [
+ {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "manual": {
+ "type": "boolean"
+ },
+ "missionPackId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerCount": {
+ "anyOf": [
+ {
+ "const": 2,
+ "type": "number"
+ },
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "teamBattle": {
+ "type": "boolean"
+ },
+ "terrainLayoutId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "twistId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "limit",
+ "missionPackId",
+ "terrainLayoutId",
+ "twistId",
+ "clockLimitMinutes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reset-setup",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "detach-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "dispositions": {
+ "items": {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "eventToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "lock-league-rosters",
+ "type": "string"
+ },
+ "leagueToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "leagueToken"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-setup-step",
+ "type": "string"
+ },
+ "step": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "step"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-attacker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "attackerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-first-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-side-disposition",
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "attach-roster",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "tactical",
+ "fixed"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roster": {
+ "properties": {
+ "built": {
+ "properties": {
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachment": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "detachmentPointBudget": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachments": {
+ "items": {
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "points": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "points"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "dispositions": {
+ "items": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "maxItems": 16,
+ "type": "array"
+ },
+ "edition": {
+ "properties": {
+ "description": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "id": {
+ "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "slug": {
+ "maxLength": 80,
+ "minLength": 1,
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "preview",
+ "released",
+ "retired"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "status"
+ ],
+ "type": "object"
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "note": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "pointsBudget": {
+ "maximum": 10000,
+ "minimum": 500,
+ "type": "integer"
+ },
+ "revision": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategicReserveLimit": {
+ "maximum": 5000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "enhancements": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "formationOptions": {
+ "items": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "group": {
+ "enum": [
+ "epic-hero",
+ "character",
+ "battleline",
+ "infantry",
+ "swarm",
+ "mounted",
+ "beast",
+ "monster",
+ "vehicle",
+ "drone",
+ "transport",
+ "fortification",
+ "other"
+ ],
+ "type": "string"
+ },
+ "joined": {
+ "items": {
+ "properties": {
+ "label": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "keywords": {
+ "items": {
+ "maxLength": 100,
+ "type": "string"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "models": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "points": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prebattleRules": {
+ "items": {
+ "enum": [
+ "infiltrators",
+ "scouts"
+ ],
+ "type": "string"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "strategicReserveExempt": {
+ "type": "boolean"
+ },
+ "transport": {
+ "type": "boolean"
+ },
+ "transportCapacity": {
+ "properties": {
+ "alternatives": {
+ "items": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "conditions": {
+ "items": {
+ "properties": {
+ "capacity": {
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "integer"
+ },
+ "carries": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "maxWounds": {
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "integer"
+ },
+ "wargear": {
+ "maxLength": 200,
+ "type": "string"
+ }
+ },
+ "required": [
+ "capacity",
+ "carries",
+ "wargear"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "excluded": {
+ "items": {
+ "properties": {
+ "except": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "keywords": {
+ "maxLength": 200,
+ "type": "string"
+ }
+ },
+ "required": [
+ "keywords"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "instead": {
+ "anyOf": [
+ {
+ "properties": {
+ "capacity": {
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "integer"
+ },
+ "carries": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "maxWounds": {
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "capacity",
+ "carries"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "main": {
+ "properties": {
+ "capacity": {
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "integer"
+ },
+ "carries": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "maxWounds": {
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "capacity",
+ "carries"
+ ],
+ "type": "object"
+ },
+ "pools": {
+ "items": {
+ "properties": {
+ "capacity": {
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "integer"
+ },
+ "carries": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "maxWounds": {
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "capacity",
+ "carries"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "space": {
+ "items": {
+ "properties": {
+ "keywords": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "moreWoundsThan": {
+ "maximum": 1000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "size": {
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "size"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ }
+ },
+ "required": [
+ "main",
+ "instead",
+ "conditions",
+ "pools",
+ "alternatives",
+ "excluded",
+ "space"
+ ],
+ "type": "object"
+ },
+ "transportRule": {
+ "maxLength": 4000,
+ "type": "string"
+ },
+ "upgrades": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "wargear": {
+ "items": {
+ "properties": {
+ "count": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "count"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "warlord": {
+ "type": "boolean"
+ },
+ "warlordEligible": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "points",
+ "models"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "catalogueId",
+ "revision",
+ "limit",
+ "detachment",
+ "disposition",
+ "units"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "lentBy": {
+ "properties": {
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 48,
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name"
+ ],
+ "type": "object"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "reminders": {
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "any"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "round-start",
+ "round-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "const": "either",
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ },
+ "whileDestroyed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 20000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "text"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "roster"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "destroyed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "set-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "destroyed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-prep",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "tactical",
+ "fixed"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "deployed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "deploy-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "deployed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "formation": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-unit-formation",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "transportKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "formation"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-painted",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "painted"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "wound-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "damage-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-deployment",
+ "type": "string"
+ },
+ "patternId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "patternId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-battlefield",
+ "type": "string"
+ },
+ "patternId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "terrainLayoutId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "patternId",
+ "terrainLayoutId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "use-stratagem",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "use-new-orders",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "secondaryKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "stratagemKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagemKey",
+ "secondaryKey",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "score-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "score-settlement",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "scores": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "category": {
+ "const": "primary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "final": {
+ "properties": {
+ "claims": {
+ "items": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "claims",
+ "delta"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "const": "secondary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "const": "achieved",
+ "type": "string"
+ }
+ },
+ "required": [
+ "category",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 31,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "scores"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-secondary-status",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "achieved",
+ "discarded",
+ "returned"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondaries",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "minItems": 1,
+ "type": "array"
+ },
+ "selected": {
+ "const": true,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-draw",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-scoring",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "select-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reveal-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "begin-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "adjust-cp",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "gainCp": {
+ "type": "boolean"
+ },
+ "keys": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "resolve-tactical-hand",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "score",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "correct-player",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "resource": {
+ "enum": [
+ "cp",
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "playerId",
+ "resource",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "settle-opponent-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "request-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "cancel-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "pause-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "resume-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "concededBy": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "end-battle",
+ "type": "string"
+ },
+ "reason": {
+ "enum": [
+ "completed",
+ "finished-early",
+ "conceded"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reopen-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "add-note",
+ "type": "string"
+ },
+ "text": {
+ "maxLength": 500,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "text"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "undo",
+ "type": "string"
+ },
+ "target": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "target"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "attach-saved-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "rosterId"
+ ],
+ "type": "object"
+ }
+]Input schema / properties / command / anyOfPrevious value: -[
- {
- "oneOf": [
- {
- "properties": {
- "cardKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "select-mission",
- "type": "string"
- },
- "occurrence": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "oneOf": [
- {
- "properties": {
- "fallback": {
- "type": "boolean"
- },
- "kind": {
- "const": "punishment",
- "type": "string"
- },
- "qualified": {
- "type": "boolean"
- },
- "unavailable": {
- "const": true,
- "type": "boolean"
- },
- "units": {
- "items": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "units",
- "fallback",
- "qualified"
- ],
- "type": "object"
- },
- {
- "properties": {
- "guards": {
- "items": {
- "properties": {
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "unit": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- }
- },
- "required": [
- "objective",
- "unit"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "kind": {
- "const": "guards",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "guards"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "tempting-target",
- "type": "string"
- },
- "noMansLand": {
- "type": "boolean"
- },
- "notHome": {
- "type": "boolean"
- },
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "objective",
- "notHome",
- "noMansLand"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "beacon",
- "type": "string"
- },
- "note": {
- "maxLength": 200,
- "type": "string"
- },
- "unit": {
- "anyOf": [
- {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "unit",
- "note"
- ],
- "type": "object"
- },
- {
- "properties": {
- "allEligible": {
- "type": "boolean"
- },
- "areas": {
- "items": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 5,
- "type": "array"
- },
- "kind": {
- "const": "locate-and-deny",
- "type": "string"
- },
- "outsideZone": {
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "areas",
- "outsideZone",
- "allEligible"
- ],
- "type": "object"
- },
- {
- "properties": {
- "controlled": {
- "type": "boolean"
- },
- "kind": {
- "const": "sensor-sweep",
- "type": "string"
- },
- "marker": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "playerId"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "marker",
- "controlled"
- ],
- "type": "object"
- },
- {
- "properties": {
- "consecrations": {
- "items": {
- "properties": {
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "unit": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- }
- },
- "required": [
- "objective",
- "unit"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "kind": {
- "const": "consecrate",
- "type": "string"
- },
- "notHome": {
- "type": "boolean"
- },
- "qualified": {
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "consecrations",
- "qualified",
- "notHome"
- ],
- "type": "object"
- }
- ]
- }
- },
- "required": [
- "kind",
- "cardKey",
- "occurrence",
- "selection"
- ],
- "type": "object"
- },
- {
- "properties": {
- "clockLimitMinutes": {
- "anyOf": [
- {
- "maximum": 300,
- "minimum": 5,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "kind": {
- "const": "configure-battle",
- "type": "string"
- },
- "limit": {
- "anyOf": [
- {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "manual": {
- "type": "boolean"
- },
- "missionPackId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerCount": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "teamBattle": {
- "type": "boolean"
- },
- "terrainLayoutId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "twistId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "limit",
- "missionPackId",
- "terrainLayoutId",
- "twistId",
- "clockLimitMinutes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reset-setup",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "detach-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "dispositions": {
- "items": {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "side",
- "disposition"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "type": "array"
- },
- "eventToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "lock-league-rosters",
- "type": "string"
- },
- "leagueToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "leagueToken"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-setup-step",
- "type": "string"
- },
- "step": {
- "maximum": 9,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "step"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-attacker",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "attackerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-first-turn",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-side-disposition",
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "side",
- "disposition"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "attach-roster",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "prep": {
- "anyOf": [
- {
- "properties": {
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "roster": {
- "properties": {
- "built": {
- "properties": {
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "detachment": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachmentIds": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "detachmentPointBudget": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachments": {
- "items": {
- "properties": {
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "points": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "points"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- },
- "disposition": {
- "anyOf": [
- {
- "maxLength": 64,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "dispositions": {
- "items": {
- "maxLength": 64,
- "type": "string"
- },
- "maxItems": 16,
- "type": "array"
- },
- "edition": {
- "properties": {
- "description": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "id": {
- "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "slug": {
- "maxLength": 80,
- "minLength": 1,
- "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
- "type": "string"
- },
- "status": {
- "enum": [
- "preview",
- "released",
- "retired"
- ],
- "type": "string"
- }
- },
- "required": [
- "id",
- "name",
- "status"
- ],
- "type": "object"
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "picks": {
- "items": {
- "properties": {
- "attachedTo": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "choices": {
- "additionalProperties": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 60,
- "minimum": 1,
- "type": "integer"
- },
- "note": {
- "maxLength": 500,
- "type": "string"
- },
- "spreads": {
- "additionalProperties": {
- "additionalProperties": {
- "maximum": 60,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 64,
- "type": "string"
- },
- "type": "object"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "toggles": {
- "additionalProperties": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "entryId"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "pointsBudget": {
- "maximum": 10000,
- "minimum": 500,
- "type": "integer"
- },
- "revision": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "strategicReserveLimit": {
- "maximum": 5000,
- "minimum": 0,
- "type": "integer"
- },
- "units": {
- "items": {
- "properties": {
- "attachedTo": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "enhancements": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "formationOptions": {
- "items": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "maxItems": 4,
- "type": "array"
- },
- "group": {
- "enum": [
- "epic-hero",
- "character",
- "battleline",
- "infantry",
- "swarm",
- "mounted",
- "beast",
- "monster",
- "vehicle",
- "drone",
- "transport",
- "fortification",
- "other"
- ],
- "type": "string"
- },
- "joined": {
- "items": {
- "properties": {
- "label": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "label",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "keywords": {
- "items": {
- "maxLength": 100,
- "type": "string"
- },
- "maxItems": 60,
- "type": "array"
- },
- "models": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "note": {
- "maxLength": 500,
- "type": "string"
- },
- "points": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "prebattleRules": {
- "items": {
- "enum": [
- "infiltrators",
- "scouts"
- ],
- "type": "string"
- },
- "maxItems": 2,
- "type": "array"
- },
- "strategicReserveExempt": {
- "type": "boolean"
- },
- "transport": {
- "type": "boolean"
- },
- "transportRule": {
- "maxLength": 4000,
- "type": "string"
- },
- "upgrades": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "wargear": {
- "items": {
- "properties": {
- "count": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "count"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "warlord": {
- "type": "boolean"
- },
- "warlordEligible": {
- "type": "boolean"
- },
- "wounds": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "key",
- "name",
- "points",
- "models"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "waivedRules": {
- "items": {
- "enum": [
- "points-limit",
- "detachments",
- "detachment-points",
- "kotc-infantry",
- "kotc-warlord",
- "kotc-epic-heroes",
- "kotc-toughness",
- "kotc-datasheet-copies"
- ],
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- }
- },
- "required": [
- "catalogueId",
- "revision",
- "limit",
- "detachment",
- "disposition",
- "units"
- ],
- "type": "object"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "lentBy": {
- "properties": {
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 48,
- "type": "string"
- }
- },
- "required": [
- "id",
- "name"
- ],
- "type": "object"
- },
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "reminders": {
- "items": {
- "properties": {
- "ability": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "description": {
- "maxLength": 10000,
- "type": "string"
- },
- "key": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "timings": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "phase-start",
- "phase-end"
- ],
- "type": "string"
- },
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "any"
- ],
- "type": "string"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "turn-start",
- "turn-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "round-start",
- "round-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "const": "either",
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "unit": {
- "properties": {
- "index": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "index",
- "name"
- ],
- "type": "object"
- },
- "whileDestroyed": {
- "type": "boolean"
- }
- },
- "required": [
- "key",
- "ability",
- "description",
- "timings"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "remindersEnabled": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 20000,
- "type": "string"
- }
- },
- "required": [
- "name",
- "text"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "roster"
- ],
- "type": "object"
- },
- {
- "properties": {
- "destroyed": {
- "type": "boolean"
- },
- "kind": {
- "const": "set-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "destroyed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-prep",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "properties": {
- "deployed": {
- "type": "boolean"
- },
- "kind": {
- "const": "deploy-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "deployed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "formation": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "kind": {
- "const": "set-unit-formation",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "transportKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "formation"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-painted",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "painted"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "wound-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "damage-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-deployment",
- "type": "string"
- },
- "patternId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "patternId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-battlefield",
- "type": "string"
- },
- "patternId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "terrainLayoutId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "patternId",
- "terrainLayoutId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "use-stratagem",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "kind": {
- "const": "use-new-orders",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "secondaryKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "stratagemKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "stratagemKey",
- "secondaryKey",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "score-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "score-settlement",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "scores": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "category": {
- "const": "primary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "final": {
- "properties": {
- "claims": {
- "items": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "maxItems": 20,
- "type": "array"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "claims",
- "delta"
- ],
- "type": "object"
- }
- },
- "required": [
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "const": "secondary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "const": "achieved",
- "type": "string"
- }
- },
- "required": [
- "category",
- "key",
- "delta"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 31,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "scores"
- ],
- "type": "object"
- },
- {
- "properties": {
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-secondary-status",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "active",
- "achieved",
- "discarded",
- "returned"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "status"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondaries",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "minItems": 1,
- "type": "array"
- },
- "selected": {
- "const": true,
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "secondaries"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-draw",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-scoring",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "select-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reveal-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "begin-battle",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "adjust-cp",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "gainCp": {
- "type": "boolean"
- },
- "keys": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "kind": {
- "const": "resolve-tactical-hand",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "enum": [
- "primary",
- "secondary"
- ],
- "type": "string"
- },
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "score",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "correct-player",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "resource": {
- "enum": [
- "cp",
- "primary",
- "secondary"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "playerId",
- "resource",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "settle-opponent-turn",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "request-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "cancel-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "pause-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "resume-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "concededBy": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "end-battle",
- "type": "string"
- },
- "reason": {
- "enum": [
- "completed",
- "finished-early",
- "conceded"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reopen-battle",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "add-note",
- "type": "string"
- },
- "text": {
- "maxLength": 500,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "text"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "undo",
- "type": "string"
- },
- "target": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- }
- ]
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "attach-saved-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "rosterId"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "properties": {
+ "cardKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "select-mission",
+ "type": "string"
+ },
+ "occurrence": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "oneOf": [
+ {
+ "properties": {
+ "fallback": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "punishment",
+ "type": "string"
+ },
+ "qualified": {
+ "type": "boolean"
+ },
+ "unavailable": {
+ "const": true,
+ "type": "boolean"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "units",
+ "fallback",
+ "qualified"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "guards": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "guards",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "guards"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "tempting-target",
+ "type": "string"
+ },
+ "noMansLand": {
+ "type": "boolean"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "objective",
+ "notHome",
+ "noMansLand"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "beacon",
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "unit": {
+ "anyOf": [
+ {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "unit",
+ "note"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "allEligible": {
+ "type": "boolean"
+ },
+ "areas": {
+ "items": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 5,
+ "type": "array"
+ },
+ "kind": {
+ "const": "locate-and-deny",
+ "type": "string"
+ },
+ "outsideZone": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "areas",
+ "outsideZone",
+ "allEligible"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "controlled": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "sensor-sweep",
+ "type": "string"
+ },
+ "marker": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "playerId"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "marker",
+ "controlled"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "consecrations": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "consecrate",
+ "type": "string"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "qualified": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "consecrations",
+ "qualified",
+ "notHome"
+ ],
+ "type": "object"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "cardKey",
+ "occurrence",
+ "selection"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "clockLimitMinutes": {
+ "anyOf": [
+ {
+ "maximum": 300,
+ "minimum": 5,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "kind": {
+ "const": "configure-battle",
+ "type": "string"
+ },
+ "limit": {
+ "anyOf": [
+ {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "manual": {
+ "type": "boolean"
+ },
+ "missionPackId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerCount": {
+ "anyOf": [
+ {
+ "const": 2,
+ "type": "number"
+ },
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "teamBattle": {
+ "type": "boolean"
+ },
+ "terrainLayoutId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "twistId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "limit",
+ "missionPackId",
+ "terrainLayoutId",
+ "twistId",
+ "clockLimitMinutes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reset-setup",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "detach-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "dispositions": {
+ "items": {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "eventToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "lock-league-rosters",
+ "type": "string"
+ },
+ "leagueToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "leagueToken"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-setup-step",
+ "type": "string"
+ },
+ "step": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "step"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-attacker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "attackerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-first-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-side-disposition",
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "attach-roster",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "tactical",
+ "fixed"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roster": {
+ "properties": {
+ "built": {
+ "properties": {
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachment": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "detachmentPointBudget": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachments": {
+ "items": {
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "points": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "points"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "dispositions": {
+ "items": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "maxItems": 16,
+ "type": "array"
+ },
+ "edition": {
+ "properties": {
+ "description": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "id": {
+ "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "slug": {
+ "maxLength": 80,
+ "minLength": 1,
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "preview",
+ "released",
+ "retired"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "status"
+ ],
+ "type": "object"
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "note": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "pointsBudget": {
+ "maximum": 10000,
+ "minimum": 500,
+ "type": "integer"
+ },
+ "revision": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategicReserveLimit": {
+ "maximum": 5000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "enhancements": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "formationOptions": {
+ "items": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "group": {
+ "enum": [
+ "epic-hero",
+ "character",
+ "battleline",
+ "infantry",
+ "swarm",
+ "mounted",
+ "beast",
+ "monster",
+ "vehicle",
+ "drone",
+ "transport",
+ "fortification",
+ "other"
+ ],
+ "type": "string"
+ },
+ "joined": {
+ "items": {
+ "properties": {
+ "label": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "keywords": {
+ "items": {
+ "maxLength": 100,
+ "type": "string"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "models": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "points": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prebattleRules": {
+ "items": {
+ "enum": [
+ "infiltrators",
+ "scouts"
+ ],
+ "type": "string"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "strategicReserveExempt": {
+ "type": "boolean"
+ },
+ "transport": {
+ "type": "boolean"
+ },
+ "transportRule": {
+ "maxLength": 4000,
+ "type": "string"
+ },
+ "upgrades": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "wargear": {
+ "items": {
+ "properties": {
+ "count": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "count"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "warlord": {
+ "type": "boolean"
+ },
+ "warlordEligible": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "points",
+ "models"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "catalogueId",
+ "revision",
+ "limit",
+ "detachment",
+ "disposition",
+ "units"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "lentBy": {
+ "properties": {
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 48,
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name"
+ ],
+ "type": "object"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "reminders": {
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "any"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "round-start",
+ "round-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "const": "either",
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ },
+ "whileDestroyed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 20000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "text"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "roster"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "destroyed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "set-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "destroyed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-prep",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "tactical",
+ "fixed"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "deployed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "deploy-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "deployed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "formation": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-unit-formation",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "transportKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "formation"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-painted",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "painted"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "wound-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "damage-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-deployment",
+ "type": "string"
+ },
+ "patternId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "patternId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-battlefield",
+ "type": "string"
+ },
+ "patternId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "terrainLayoutId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "patternId",
+ "terrainLayoutId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "use-stratagem",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "use-new-orders",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "secondaryKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "stratagemKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagemKey",
+ "secondaryKey",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "score-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "score-settlement",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "scores": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "category": {
+ "const": "primary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "final": {
+ "properties": {
+ "claims": {
+ "items": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "claims",
+ "delta"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "const": "secondary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "const": "achieved",
+ "type": "string"
+ }
+ },
+ "required": [
+ "category",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 31,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "scores"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-secondary-status",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "achieved",
+ "discarded",
+ "returned"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondaries",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "minItems": 1,
+ "type": "array"
+ },
+ "selected": {
+ "const": true,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-draw",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-scoring",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "select-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reveal-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "begin-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "adjust-cp",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "gainCp": {
+ "type": "boolean"
+ },
+ "keys": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "resolve-tactical-hand",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "score",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "correct-player",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "resource": {
+ "enum": [
+ "cp",
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "playerId",
+ "resource",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "settle-opponent-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "request-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "cancel-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "pause-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "resume-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "concededBy": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "end-battle",
+ "type": "string"
+ },
+ "reason": {
+ "enum": [
+ "completed",
+ "finished-early",
+ "conceded"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reopen-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "add-note",
+ "type": "string"
+ },
+ "text": {
+ "maxLength": 500,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "text"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "undo",
+ "type": "string"
+ },
+ "target": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "target"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "attach-saved-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "rosterId"
+ ],
+ "type": "object"
+ }
+]Input schema / properties / command / anyOfPrevious value: -[
- {
- "oneOf": [
- {
- "properties": {
- "cardKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "select-mission",
- "type": "string"
- },
- "occurrence": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "oneOf": [
- {
- "properties": {
- "fallback": {
- "type": "boolean"
- },
- "kind": {
- "const": "punishment",
- "type": "string"
- },
- "qualified": {
- "type": "boolean"
- },
- "unavailable": {
- "const": true,
- "type": "boolean"
- },
- "units": {
- "items": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "units",
- "fallback",
- "qualified"
- ],
- "type": "object"
- },
- {
- "properties": {
- "guards": {
- "items": {
- "properties": {
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "unit": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- }
- },
- "required": [
- "objective",
- "unit"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "kind": {
- "const": "guards",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "guards"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "tempting-target",
- "type": "string"
- },
- "noMansLand": {
- "type": "boolean"
- },
- "notHome": {
- "type": "boolean"
- },
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "objective",
- "notHome",
- "noMansLand"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "beacon",
- "type": "string"
- },
- "note": {
- "maxLength": 200,
- "type": "string"
- },
- "unit": {
- "anyOf": [
- {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "unit",
- "note"
- ],
- "type": "object"
- },
- {
- "properties": {
- "allEligible": {
- "type": "boolean"
- },
- "areas": {
- "items": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 5,
- "type": "array"
- },
- "kind": {
- "const": "locate-and-deny",
- "type": "string"
- },
- "outsideZone": {
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "areas",
- "outsideZone",
- "allEligible"
- ],
- "type": "object"
- },
- {
- "properties": {
- "controlled": {
- "type": "boolean"
- },
- "kind": {
- "const": "sensor-sweep",
- "type": "string"
- },
- "marker": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "playerId"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "marker",
- "controlled"
- ],
- "type": "object"
- },
- {
- "properties": {
- "consecrations": {
- "items": {
- "properties": {
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "unit": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- }
- },
- "required": [
- "objective",
- "unit"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "kind": {
- "const": "consecrate",
- "type": "string"
- },
- "notHome": {
- "type": "boolean"
- },
- "qualified": {
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "consecrations",
- "qualified",
- "notHome"
- ],
- "type": "object"
- }
- ]
- }
- },
- "required": [
- "kind",
- "cardKey",
- "occurrence",
- "selection"
- ],
- "type": "object"
- },
- {
- "properties": {
- "clockLimitMinutes": {
- "anyOf": [
- {
- "maximum": 300,
- "minimum": 5,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "kind": {
- "const": "configure-battle",
- "type": "string"
- },
- "limit": {
- "anyOf": [
- {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "manual": {
- "type": "boolean"
- },
- "missionPackId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerCount": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "teamBattle": {
- "type": "boolean"
- },
- "terrainLayoutId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "twistId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "limit",
- "missionPackId",
- "terrainLayoutId",
- "twistId",
- "clockLimitMinutes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reset-setup",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "detach-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "dispositions": {
- "items": {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "side",
- "disposition"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "type": "array"
- },
- "eventToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "lock-league-rosters",
- "type": "string"
- },
- "leagueToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "leagueToken"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-setup-step",
- "type": "string"
- },
- "step": {
- "maximum": 9,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "step"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-attacker",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "attackerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-first-turn",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-side-disposition",
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "side",
- "disposition"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "attach-roster",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "prep": {
- "anyOf": [
- {
- "properties": {
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "roster": {
- "properties": {
- "built": {
- "properties": {
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "detachment": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachmentIds": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "detachmentPointBudget": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachments": {
- "items": {
- "properties": {
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "points": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "points"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- },
- "disposition": {
- "anyOf": [
- {
- "maxLength": 64,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "dispositions": {
- "items": {
- "maxLength": 64,
- "type": "string"
- },
- "maxItems": 16,
- "type": "array"
- },
- "edition": {
- "properties": {
- "description": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "id": {
- "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "slug": {
- "maxLength": 80,
- "minLength": 1,
- "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
- "type": "string"
- },
- "status": {
- "enum": [
- "preview",
- "released",
- "retired"
- ],
- "type": "string"
- }
- },
- "required": [
- "id",
- "name",
- "status"
- ],
- "type": "object"
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "picks": {
- "items": {
- "properties": {
- "attachedTo": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "choices": {
- "additionalProperties": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 60,
- "minimum": 1,
- "type": "integer"
- },
- "note": {
- "maxLength": 500,
- "type": "string"
- },
- "spreads": {
- "additionalProperties": {
- "additionalProperties": {
- "maximum": 60,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 64,
- "type": "string"
- },
- "type": "object"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "toggles": {
- "additionalProperties": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "entryId"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "pointsBudget": {
- "maximum": 10000,
- "minimum": 500,
- "type": "integer"
- },
- "revision": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "strategicReserveLimit": {
- "maximum": 5000,
- "minimum": 0,
- "type": "integer"
- },
- "units": {
- "items": {
- "properties": {
- "attachedTo": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "enhancements": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "formationOptions": {
- "items": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "maxItems": 4,
- "type": "array"
- },
- "group": {
- "enum": [
- "epic-hero",
- "character",
- "battleline",
- "infantry",
- "swarm",
- "mounted",
- "beast",
- "monster",
- "vehicle",
- "drone",
- "transport",
- "fortification",
- "other"
- ],
- "type": "string"
- },
- "joined": {
- "items": {
- "properties": {
- "label": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "label",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "note": {
- "maxLength": 500,
- "type": "string"
- },
- "points": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "prebattleRules": {
- "items": {
- "enum": [
- "infiltrators",
- "scouts"
- ],
- "type": "string"
- },
- "maxItems": 2,
- "type": "array"
- },
- "strategicReserveExempt": {
- "type": "boolean"
- },
- "transport": {
- "type": "boolean"
- },
- "transportRule": {
- "maxLength": 4000,
- "type": "string"
- },
- "upgrades": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "wargear": {
- "items": {
- "properties": {
- "count": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "count"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "warlord": {
- "type": "boolean"
- },
- "warlordEligible": {
- "type": "boolean"
- },
- "wounds": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "key",
- "name",
- "points",
- "models"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "waivedRules": {
- "items": {
- "enum": [
- "points-limit",
- "detachments",
- "detachment-points",
- "kotc-infantry",
- "kotc-warlord",
- "kotc-epic-heroes",
- "kotc-toughness",
- "kotc-datasheet-copies"
- ],
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- }
- },
- "required": [
- "catalogueId",
- "revision",
- "limit",
- "detachment",
- "disposition",
- "units"
- ],
- "type": "object"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "lentBy": {
- "properties": {
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 48,
- "type": "string"
- }
- },
- "required": [
- "id",
- "name"
- ],
- "type": "object"
- },
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "reminders": {
- "items": {
- "properties": {
- "ability": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "description": {
- "maxLength": 10000,
- "type": "string"
- },
- "key": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "timings": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "phase-start",
- "phase-end"
- ],
- "type": "string"
- },
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "any"
- ],
- "type": "string"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "turn-start",
- "turn-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "round-start",
- "round-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "const": "either",
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "unit": {
- "properties": {
- "index": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "index",
- "name"
- ],
- "type": "object"
- },
- "whileDestroyed": {
- "type": "boolean"
- }
- },
- "required": [
- "key",
- "ability",
- "description",
- "timings"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "remindersEnabled": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 20000,
- "type": "string"
- }
- },
- "required": [
- "name",
- "text"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "roster"
- ],
- "type": "object"
- },
- {
- "properties": {
- "destroyed": {
- "type": "boolean"
- },
- "kind": {
- "const": "set-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "destroyed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-prep",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "properties": {
- "deployed": {
- "type": "boolean"
- },
- "kind": {
- "const": "deploy-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "deployed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "formation": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "kind": {
- "const": "set-unit-formation",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "transportKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "formation"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-painted",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "painted"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "wound-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "damage-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-deployment",
- "type": "string"
- },
- "patternId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "patternId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-battlefield",
- "type": "string"
- },
- "patternId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "terrainLayoutId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "patternId",
- "terrainLayoutId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "use-stratagem",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "kind": {
- "const": "use-new-orders",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "secondaryKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "stratagemKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "stratagemKey",
- "secondaryKey",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "score-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "score-settlement",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "scores": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "category": {
- "const": "primary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "final": {
- "properties": {
- "claims": {
- "items": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "maxItems": 20,
- "type": "array"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "claims",
- "delta"
- ],
- "type": "object"
- }
- },
- "required": [
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "const": "secondary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "const": "achieved",
- "type": "string"
- }
- },
- "required": [
- "category",
- "key",
- "delta"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 31,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "scores"
- ],
- "type": "object"
- },
- {
- "properties": {
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-secondary-status",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "active",
- "achieved",
- "discarded",
- "returned"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "status"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondaries",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "minItems": 1,
- "type": "array"
- },
- "selected": {
- "const": true,
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "secondaries"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-draw",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-scoring",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "select-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reveal-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "begin-battle",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "adjust-cp",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "gainCp": {
- "type": "boolean"
- },
- "keys": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "kind": {
- "const": "resolve-tactical-hand",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "enum": [
- "primary",
- "secondary"
- ],
- "type": "string"
- },
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "score",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "correct-player",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "resource": {
- "enum": [
- "cp",
- "primary",
- "secondary"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "playerId",
- "resource",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "settle-opponent-turn",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "request-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "cancel-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "pause-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "resume-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "concededBy": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "end-battle",
- "type": "string"
- },
- "reason": {
- "enum": [
- "completed",
- "finished-early",
- "conceded"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reopen-battle",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "add-note",
- "type": "string"
- },
- "text": {
- "maxLength": 500,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "text"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "undo",
- "type": "string"
- },
- "target": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- }
- ]
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "attach-saved-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "rosterId"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "properties": {
+ "cardKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "select-mission",
+ "type": "string"
+ },
+ "occurrence": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "oneOf": [
+ {
+ "properties": {
+ "fallback": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "punishment",
+ "type": "string"
+ },
+ "qualified": {
+ "type": "boolean"
+ },
+ "unavailable": {
+ "const": true,
+ "type": "boolean"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "units",
+ "fallback",
+ "qualified"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "guards": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "guards",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "guards"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "tempting-target",
+ "type": "string"
+ },
+ "noMansLand": {
+ "type": "boolean"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "objective",
+ "notHome",
+ "noMansLand"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "beacon",
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "unit": {
+ "anyOf": [
+ {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "unit",
+ "note"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "allEligible": {
+ "type": "boolean"
+ },
+ "areas": {
+ "items": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 5,
+ "type": "array"
+ },
+ "kind": {
+ "const": "locate-and-deny",
+ "type": "string"
+ },
+ "outsideZone": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "areas",
+ "outsideZone",
+ "allEligible"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "controlled": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "sensor-sweep",
+ "type": "string"
+ },
+ "marker": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "playerId"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "marker",
+ "controlled"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "consecrations": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "consecrate",
+ "type": "string"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "qualified": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "consecrations",
+ "qualified",
+ "notHome"
+ ],
+ "type": "object"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "cardKey",
+ "occurrence",
+ "selection"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "clockLimitMinutes": {
+ "anyOf": [
+ {
+ "maximum": 300,
+ "minimum": 5,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "kind": {
+ "const": "configure-battle",
+ "type": "string"
+ },
+ "limit": {
+ "anyOf": [
+ {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "manual": {
+ "type": "boolean"
+ },
+ "missionPackId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerCount": {
+ "anyOf": [
+ {
+ "const": 2,
+ "type": "number"
+ },
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "teamBattle": {
+ "type": "boolean"
+ },
+ "terrainLayoutId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "twistId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "limit",
+ "missionPackId",
+ "terrainLayoutId",
+ "twistId",
+ "clockLimitMinutes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reset-setup",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "detach-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "dispositions": {
+ "items": {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "eventToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "lock-league-rosters",
+ "type": "string"
+ },
+ "leagueToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "leagueToken"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-setup-step",
+ "type": "string"
+ },
+ "step": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "step"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-attacker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "attackerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-first-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-side-disposition",
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "attach-roster",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roster": {
+ "properties": {
+ "built": {
+ "properties": {
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachment": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "detachmentPointBudget": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachments": {
+ "items": {
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "points": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "points"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "dispositions": {
+ "items": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "maxItems": 16,
+ "type": "array"
+ },
+ "edition": {
+ "properties": {
+ "description": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "id": {
+ "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "slug": {
+ "maxLength": 80,
+ "minLength": 1,
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "preview",
+ "released",
+ "retired"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "status"
+ ],
+ "type": "object"
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "note": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "pointsBudget": {
+ "maximum": 10000,
+ "minimum": 500,
+ "type": "integer"
+ },
+ "revision": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategicReserveLimit": {
+ "maximum": 5000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "enhancements": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "formationOptions": {
+ "items": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "group": {
+ "enum": [
+ "epic-hero",
+ "character",
+ "battleline",
+ "infantry",
+ "swarm",
+ "mounted",
+ "beast",
+ "monster",
+ "vehicle",
+ "drone",
+ "transport",
+ "fortification",
+ "other"
+ ],
+ "type": "string"
+ },
+ "joined": {
+ "items": {
+ "properties": {
+ "label": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "keywords": {
+ "items": {
+ "maxLength": 100,
+ "type": "string"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "models": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "points": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prebattleRules": {
+ "items": {
+ "enum": [
+ "infiltrators",
+ "scouts"
+ ],
+ "type": "string"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "strategicReserveExempt": {
+ "type": "boolean"
+ },
+ "transport": {
+ "type": "boolean"
+ },
+ "transportRule": {
+ "maxLength": 4000,
+ "type": "string"
+ },
+ "upgrades": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "wargear": {
+ "items": {
+ "properties": {
+ "count": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "count"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "warlord": {
+ "type": "boolean"
+ },
+ "warlordEligible": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "points",
+ "models"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "catalogueId",
+ "revision",
+ "limit",
+ "detachment",
+ "disposition",
+ "units"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "lentBy": {
+ "properties": {
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 48,
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name"
+ ],
+ "type": "object"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "reminders": {
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "any"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "round-start",
+ "round-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "const": "either",
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ },
+ "whileDestroyed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 20000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "text"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "roster"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "destroyed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "set-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "destroyed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-prep",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "deployed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "deploy-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "deployed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "formation": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-unit-formation",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "transportKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "formation"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-painted",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "painted"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "wound-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "damage-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-deployment",
+ "type": "string"
+ },
+ "patternId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "patternId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-battlefield",
+ "type": "string"
+ },
+ "patternId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "terrainLayoutId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "patternId",
+ "terrainLayoutId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "use-stratagem",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "use-new-orders",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "secondaryKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "stratagemKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagemKey",
+ "secondaryKey",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "score-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "score-settlement",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "scores": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "category": {
+ "const": "primary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "final": {
+ "properties": {
+ "claims": {
+ "items": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "claims",
+ "delta"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "const": "secondary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "const": "achieved",
+ "type": "string"
+ }
+ },
+ "required": [
+ "category",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 31,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "scores"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-secondary-status",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "achieved",
+ "discarded",
+ "returned"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondaries",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "minItems": 1,
+ "type": "array"
+ },
+ "selected": {
+ "const": true,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-draw",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-scoring",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "select-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reveal-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "begin-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "adjust-cp",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "gainCp": {
+ "type": "boolean"
+ },
+ "keys": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "resolve-tactical-hand",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "score",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "correct-player",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "resource": {
+ "enum": [
+ "cp",
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "playerId",
+ "resource",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "settle-opponent-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "request-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "cancel-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "pause-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "resume-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "concededBy": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "end-battle",
+ "type": "string"
+ },
+ "reason": {
+ "enum": [
+ "completed",
+ "finished-early",
+ "conceded"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reopen-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "add-note",
+ "type": "string"
+ },
+ "text": {
+ "maxLength": 500,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "text"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "undo",
+ "type": "string"
+ },
+ "target": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "target"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "attach-saved-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "rosterId"
+ ],
+ "type": "object"
+ }
+]Input schema / properties / command / anyOfPrevious value: -[
- {
- "oneOf": [
- {
- "properties": {
- "cardKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "select-mission",
- "type": "string"
- },
- "occurrence": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "oneOf": [
- {
- "properties": {
- "fallback": {
- "type": "boolean"
- },
- "kind": {
- "const": "punishment",
- "type": "string"
- },
- "qualified": {
- "type": "boolean"
- },
- "unavailable": {
- "const": true,
- "type": "boolean"
- },
- "units": {
- "items": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "units",
- "fallback",
- "qualified"
- ],
- "type": "object"
- },
- {
- "properties": {
- "guards": {
- "items": {
- "properties": {
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "unit": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- }
- },
- "required": [
- "objective",
- "unit"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "kind": {
- "const": "guards",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "guards"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "tempting-target",
- "type": "string"
- },
- "noMansLand": {
- "type": "boolean"
- },
- "notHome": {
- "type": "boolean"
- },
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "objective",
- "notHome",
- "noMansLand"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "beacon",
- "type": "string"
- },
- "note": {
- "maxLength": 200,
- "type": "string"
- },
- "unit": {
- "anyOf": [
- {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "unit",
- "note"
- ],
- "type": "object"
- },
- {
- "properties": {
- "allEligible": {
- "type": "boolean"
- },
- "areas": {
- "items": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 5,
- "type": "array"
- },
- "kind": {
- "const": "locate-and-deny",
- "type": "string"
- },
- "outsideZone": {
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "areas",
- "outsideZone",
- "allEligible"
- ],
- "type": "object"
- },
- {
- "properties": {
- "controlled": {
- "type": "boolean"
- },
- "kind": {
- "const": "sensor-sweep",
- "type": "string"
- },
- "marker": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "playerId"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "marker",
- "controlled"
- ],
- "type": "object"
- },
- {
- "properties": {
- "consecrations": {
- "items": {
- "properties": {
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "unit": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- }
- },
- "required": [
- "objective",
- "unit"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "kind": {
- "const": "consecrate",
- "type": "string"
- },
- "notHome": {
- "type": "boolean"
- },
- "qualified": {
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "consecrations",
- "qualified",
- "notHome"
- ],
- "type": "object"
- }
- ]
- }
- },
- "required": [
- "kind",
- "cardKey",
- "occurrence",
- "selection"
- ],
- "type": "object"
- },
- {
- "properties": {
- "clockLimitMinutes": {
- "anyOf": [
- {
- "maximum": 300,
- "minimum": 5,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "kind": {
- "const": "configure-battle",
- "type": "string"
- },
- "limit": {
- "anyOf": [
- {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "manual": {
- "type": "boolean"
- },
- "missionPackId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerCount": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "teamBattle": {
- "type": "boolean"
- },
- "terrainLayoutId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "twistId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "limit",
- "missionPackId",
- "terrainLayoutId",
- "twistId",
- "clockLimitMinutes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reset-setup",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "detach-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "eventToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "lock-league-rosters",
- "type": "string"
- },
- "leagueToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "leagueToken"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-setup-step",
- "type": "string"
- },
- "step": {
- "maximum": 9,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "step"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-attacker",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "attackerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-first-turn",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-side-disposition",
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "side",
- "disposition"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "attach-roster",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "prep": {
- "anyOf": [
- {
- "properties": {
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "roster": {
- "properties": {
- "built": {
- "properties": {
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "detachment": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachmentIds": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "detachmentPointBudget": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachments": {
- "items": {
- "properties": {
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "points": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "points"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- },
- "disposition": {
- "anyOf": [
- {
- "maxLength": 64,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "edition": {
- "properties": {
- "description": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "id": {
- "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "slug": {
- "maxLength": 80,
- "minLength": 1,
- "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
- "type": "string"
- },
- "status": {
- "enum": [
- "preview",
- "released",
- "retired"
- ],
- "type": "string"
- }
- },
- "required": [
- "id",
- "name",
- "status"
- ],
- "type": "object"
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "picks": {
- "items": {
- "properties": {
- "attachedTo": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "choices": {
- "additionalProperties": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 60,
- "minimum": 1,
- "type": "integer"
- },
- "note": {
- "maxLength": 500,
- "type": "string"
- },
- "spreads": {
- "additionalProperties": {
- "additionalProperties": {
- "maximum": 60,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 64,
- "type": "string"
- },
- "type": "object"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "toggles": {
- "additionalProperties": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "entryId"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "pointsBudget": {
- "maximum": 10000,
- "minimum": 500,
- "type": "integer"
- },
- "revision": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "strategicReserveLimit": {
- "maximum": 5000,
- "minimum": 0,
- "type": "integer"
- },
- "units": {
- "items": {
- "properties": {
- "attachedTo": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "enhancements": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "formationOptions": {
- "items": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "maxItems": 4,
- "type": "array"
- },
- "group": {
- "enum": [
- "epic-hero",
- "character",
- "battleline",
- "infantry",
- "swarm",
- "mounted",
- "beast",
- "monster",
- "vehicle",
- "drone",
- "transport",
- "fortification",
- "other"
- ],
- "type": "string"
- },
- "joined": {
- "items": {
- "properties": {
- "label": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "label",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "note": {
- "maxLength": 500,
- "type": "string"
- },
- "points": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "prebattleRules": {
- "items": {
- "enum": [
- "infiltrators",
- "scouts"
- ],
- "type": "string"
- },
- "maxItems": 2,
- "type": "array"
- },
- "strategicReserveExempt": {
- "type": "boolean"
- },
- "transport": {
- "type": "boolean"
- },
- "transportRule": {
- "maxLength": 4000,
- "type": "string"
- },
- "upgrades": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "wargear": {
- "items": {
- "properties": {
- "count": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "count"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "warlord": {
- "type": "boolean"
- },
- "warlordEligible": {
- "type": "boolean"
- },
- "wounds": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "key",
- "name",
- "points",
- "models"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "waivedRules": {
- "items": {
- "enum": [
- "points-limit",
- "detachments",
- "detachment-points",
- "kotc-infantry",
- "kotc-warlord",
- "kotc-epic-heroes",
- "kotc-toughness",
- "kotc-datasheet-copies"
- ],
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- }
- },
- "required": [
- "catalogueId",
- "revision",
- "limit",
- "detachment",
- "disposition",
- "units"
- ],
- "type": "object"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "lentBy": {
- "properties": {
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 48,
- "type": "string"
- }
- },
- "required": [
- "id",
- "name"
- ],
- "type": "object"
- },
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "reminders": {
- "items": {
- "properties": {
- "ability": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "description": {
- "maxLength": 10000,
- "type": "string"
- },
- "key": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "timings": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "phase-start",
- "phase-end"
- ],
- "type": "string"
- },
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "any"
- ],
- "type": "string"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "turn-start",
- "turn-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "round-start",
- "round-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "const": "either",
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "unit": {
- "properties": {
- "index": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "index",
- "name"
- ],
- "type": "object"
- },
- "whileDestroyed": {
- "type": "boolean"
- }
- },
- "required": [
- "key",
- "ability",
- "description",
- "timings"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "remindersEnabled": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 20000,
- "type": "string"
- }
- },
- "required": [
- "name",
- "text"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "roster"
- ],
- "type": "object"
- },
- {
- "properties": {
- "destroyed": {
- "type": "boolean"
- },
- "kind": {
- "const": "set-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "destroyed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-prep",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "properties": {
- "deployed": {
- "type": "boolean"
- },
- "kind": {
- "const": "deploy-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "deployed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "formation": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "kind": {
- "const": "set-unit-formation",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "transportKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "formation"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-painted",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "painted"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "wound-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "damage-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-deployment",
- "type": "string"
- },
- "patternId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "patternId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-battlefield",
- "type": "string"
- },
- "patternId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "terrainLayoutId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "patternId",
- "terrainLayoutId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "use-stratagem",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "kind": {
- "const": "use-new-orders",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "secondaryKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "stratagemKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "stratagemKey",
- "secondaryKey",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "score-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "score-settlement",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "scores": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "category": {
- "const": "primary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "final": {
- "properties": {
- "claims": {
- "items": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "maxItems": 20,
- "type": "array"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "claims",
- "delta"
- ],
- "type": "object"
- }
- },
- "required": [
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "const": "secondary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "const": "achieved",
- "type": "string"
- }
- },
- "required": [
- "category",
- "key",
- "delta"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 31,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "scores"
- ],
- "type": "object"
- },
- {
- "properties": {
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-secondary-status",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "active",
- "achieved",
- "discarded",
- "returned"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "status"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondaries",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "minItems": 1,
- "type": "array"
- },
- "selected": {
- "const": true,
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "secondaries"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-draw",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-scoring",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "select-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reveal-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "begin-battle",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "adjust-cp",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "gainCp": {
- "type": "boolean"
- },
- "keys": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "kind": {
- "const": "resolve-tactical-hand",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "enum": [
- "primary",
- "secondary"
- ],
- "type": "string"
- },
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "score",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "correct-player",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "resource": {
- "enum": [
- "cp",
- "primary",
- "secondary"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "playerId",
- "resource",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "settle-opponent-turn",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "request-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "cancel-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "pause-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "resume-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "concededBy": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "end-battle",
- "type": "string"
- },
- "reason": {
- "enum": [
- "completed",
- "finished-early",
- "conceded"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reopen-battle",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "add-note",
- "type": "string"
- },
- "text": {
- "maxLength": 500,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "text"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "undo",
- "type": "string"
- },
- "target": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- }
- ]
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "attach-saved-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "rosterId"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "properties": {
+ "cardKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "select-mission",
+ "type": "string"
+ },
+ "occurrence": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "oneOf": [
+ {
+ "properties": {
+ "fallback": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "punishment",
+ "type": "string"
+ },
+ "qualified": {
+ "type": "boolean"
+ },
+ "unavailable": {
+ "const": true,
+ "type": "boolean"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "units",
+ "fallback",
+ "qualified"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "guards": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "guards",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "guards"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "tempting-target",
+ "type": "string"
+ },
+ "noMansLand": {
+ "type": "boolean"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "objective",
+ "notHome",
+ "noMansLand"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "beacon",
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "unit": {
+ "anyOf": [
+ {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "unit",
+ "note"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "allEligible": {
+ "type": "boolean"
+ },
+ "areas": {
+ "items": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 5,
+ "type": "array"
+ },
+ "kind": {
+ "const": "locate-and-deny",
+ "type": "string"
+ },
+ "outsideZone": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "areas",
+ "outsideZone",
+ "allEligible"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "controlled": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "sensor-sweep",
+ "type": "string"
+ },
+ "marker": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "playerId"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "marker",
+ "controlled"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "consecrations": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "consecrate",
+ "type": "string"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "qualified": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "consecrations",
+ "qualified",
+ "notHome"
+ ],
+ "type": "object"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "cardKey",
+ "occurrence",
+ "selection"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "clockLimitMinutes": {
+ "anyOf": [
+ {
+ "maximum": 300,
+ "minimum": 5,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "kind": {
+ "const": "configure-battle",
+ "type": "string"
+ },
+ "limit": {
+ "anyOf": [
+ {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "manual": {
+ "type": "boolean"
+ },
+ "missionPackId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerCount": {
+ "anyOf": [
+ {
+ "const": 2,
+ "type": "number"
+ },
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "teamBattle": {
+ "type": "boolean"
+ },
+ "terrainLayoutId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "twistId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "limit",
+ "missionPackId",
+ "terrainLayoutId",
+ "twistId",
+ "clockLimitMinutes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reset-setup",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "detach-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "dispositions": {
+ "items": {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "eventToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "lock-league-rosters",
+ "type": "string"
+ },
+ "leagueToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "leagueToken"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-setup-step",
+ "type": "string"
+ },
+ "step": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "step"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-attacker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "attackerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-first-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-side-disposition",
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "attach-roster",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roster": {
+ "properties": {
+ "built": {
+ "properties": {
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachment": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "detachmentPointBudget": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachments": {
+ "items": {
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "points": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "points"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "dispositions": {
+ "items": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "maxItems": 16,
+ "type": "array"
+ },
+ "edition": {
+ "properties": {
+ "description": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "id": {
+ "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "slug": {
+ "maxLength": 80,
+ "minLength": 1,
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "preview",
+ "released",
+ "retired"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "status"
+ ],
+ "type": "object"
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "note": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "pointsBudget": {
+ "maximum": 10000,
+ "minimum": 500,
+ "type": "integer"
+ },
+ "revision": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategicReserveLimit": {
+ "maximum": 5000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "enhancements": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "formationOptions": {
+ "items": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "group": {
+ "enum": [
+ "epic-hero",
+ "character",
+ "battleline",
+ "infantry",
+ "swarm",
+ "mounted",
+ "beast",
+ "monster",
+ "vehicle",
+ "drone",
+ "transport",
+ "fortification",
+ "other"
+ ],
+ "type": "string"
+ },
+ "joined": {
+ "items": {
+ "properties": {
+ "label": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "points": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prebattleRules": {
+ "items": {
+ "enum": [
+ "infiltrators",
+ "scouts"
+ ],
+ "type": "string"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "strategicReserveExempt": {
+ "type": "boolean"
+ },
+ "transport": {
+ "type": "boolean"
+ },
+ "transportRule": {
+ "maxLength": 4000,
+ "type": "string"
+ },
+ "upgrades": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "wargear": {
+ "items": {
+ "properties": {
+ "count": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "count"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "warlord": {
+ "type": "boolean"
+ },
+ "warlordEligible": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "points",
+ "models"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "catalogueId",
+ "revision",
+ "limit",
+ "detachment",
+ "disposition",
+ "units"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "lentBy": {
+ "properties": {
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 48,
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name"
+ ],
+ "type": "object"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "reminders": {
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "any"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "round-start",
+ "round-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "const": "either",
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ },
+ "whileDestroyed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 20000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "text"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "roster"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "destroyed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "set-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "destroyed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-prep",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "deployed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "deploy-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "deployed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "formation": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-unit-formation",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "transportKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "formation"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-painted",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "painted"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "wound-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "damage-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-deployment",
+ "type": "string"
+ },
+ "patternId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "patternId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-battlefield",
+ "type": "string"
+ },
+ "patternId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "terrainLayoutId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "patternId",
+ "terrainLayoutId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "use-stratagem",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "use-new-orders",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "secondaryKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "stratagemKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagemKey",
+ "secondaryKey",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "score-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "score-settlement",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "scores": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "category": {
+ "const": "primary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "final": {
+ "properties": {
+ "claims": {
+ "items": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "claims",
+ "delta"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "const": "secondary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "const": "achieved",
+ "type": "string"
+ }
+ },
+ "required": [
+ "category",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 31,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "scores"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-secondary-status",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "achieved",
+ "discarded",
+ "returned"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondaries",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "minItems": 1,
+ "type": "array"
+ },
+ "selected": {
+ "const": true,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-draw",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-scoring",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "select-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reveal-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "begin-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "adjust-cp",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "gainCp": {
+ "type": "boolean"
+ },
+ "keys": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "resolve-tactical-hand",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "score",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "correct-player",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "resource": {
+ "enum": [
+ "cp",
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "playerId",
+ "resource",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "settle-opponent-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "request-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "cancel-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "pause-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "resume-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "concededBy": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "end-battle",
+ "type": "string"
+ },
+ "reason": {
+ "enum": [
+ "completed",
+ "finished-early",
+ "conceded"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reopen-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "add-note",
+ "type": "string"
+ },
+ "text": {
+ "maxLength": 500,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "text"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "undo",
+ "type": "string"
+ },
+ "target": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "target"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "attach-saved-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "rosterId"
+ ],
+ "type": "object"
+ }
+]Input schema / properties / command / anyOfPrevious value: -[
- {
- "oneOf": [
- {
- "properties": {
- "cardKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "select-mission",
- "type": "string"
- },
- "occurrence": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "oneOf": [
- {
- "properties": {
- "fallback": {
- "type": "boolean"
- },
- "kind": {
- "const": "punishment",
- "type": "string"
- },
- "qualified": {
- "type": "boolean"
- },
- "unavailable": {
- "const": true,
- "type": "boolean"
- },
- "units": {
- "items": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "units",
- "fallback",
- "qualified"
- ],
- "type": "object"
- },
- {
- "properties": {
- "guards": {
- "items": {
- "properties": {
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "unit": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- }
- },
- "required": [
- "objective",
- "unit"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "kind": {
- "const": "guards",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "guards"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "tempting-target",
- "type": "string"
- },
- "noMansLand": {
- "type": "boolean"
- },
- "notHome": {
- "type": "boolean"
- },
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "objective",
- "notHome",
- "noMansLand"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "beacon",
- "type": "string"
- },
- "note": {
- "maxLength": 200,
- "type": "string"
- },
- "unit": {
- "anyOf": [
- {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "unit",
- "note"
- ],
- "type": "object"
- },
- {
- "properties": {
- "allEligible": {
- "type": "boolean"
- },
- "areas": {
- "items": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 5,
- "type": "array"
- },
- "kind": {
- "const": "locate-and-deny",
- "type": "string"
- },
- "outsideZone": {
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "areas",
- "outsideZone",
- "allEligible"
- ],
- "type": "object"
- },
- {
- "properties": {
- "controlled": {
- "type": "boolean"
- },
- "kind": {
- "const": "sensor-sweep",
- "type": "string"
- },
- "marker": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "playerId"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "marker",
- "controlled"
- ],
- "type": "object"
- },
- {
- "properties": {
- "consecrations": {
- "items": {
- "properties": {
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "unit": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- }
- },
- "required": [
- "objective",
- "unit"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "kind": {
- "const": "consecrate",
- "type": "string"
- },
- "notHome": {
- "type": "boolean"
- },
- "qualified": {
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "consecrations",
- "qualified",
- "notHome"
- ],
- "type": "object"
- }
- ]
- }
- },
- "required": [
- "kind",
- "cardKey",
- "occurrence",
- "selection"
- ],
- "type": "object"
- },
- {
- "properties": {
- "clockLimitMinutes": {
- "anyOf": [
- {
- "maximum": 300,
- "minimum": 5,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "kind": {
- "const": "configure-battle",
- "type": "string"
- },
- "limit": {
- "anyOf": [
- {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "manual": {
- "type": "boolean"
- },
- "missionPackId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerCount": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "teamBattle": {
- "type": "boolean"
- },
- "terrainLayoutId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "twistId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "limit",
- "missionPackId",
- "terrainLayoutId",
- "twistId",
- "clockLimitMinutes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reset-setup",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "detach-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "eventToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "lock-league-rosters",
- "type": "string"
- },
- "leagueToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "leagueToken"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-setup-step",
- "type": "string"
- },
- "step": {
- "maximum": 9,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "step"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-attacker",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "attackerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-first-turn",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-side-disposition",
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "side",
- "disposition"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "attach-roster",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "prep": {
- "anyOf": [
- {
- "properties": {
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "roster": {
- "properties": {
- "built": {
- "properties": {
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "detachment": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachmentIds": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "detachmentPointBudget": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachments": {
- "items": {
- "properties": {
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "points": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "points"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- },
- "disposition": {
- "anyOf": [
- {
- "maxLength": 64,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "edition": {
- "properties": {
- "description": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "id": {
- "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "slug": {
- "maxLength": 80,
- "minLength": 1,
- "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
- "type": "string"
- },
- "status": {
- "enum": [
- "preview",
- "released",
- "retired"
- ],
- "type": "string"
- }
- },
- "required": [
- "id",
- "name",
- "status"
- ],
- "type": "object"
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "picks": {
- "items": {
- "properties": {
- "attachedTo": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "choices": {
- "additionalProperties": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 60,
- "minimum": 1,
- "type": "integer"
- },
- "note": {
- "maxLength": 500,
- "type": "string"
- },
- "spreads": {
- "additionalProperties": {
- "additionalProperties": {
- "maximum": 60,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 64,
- "type": "string"
- },
- "type": "object"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "toggles": {
- "additionalProperties": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "entryId"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "pointsBudget": {
- "maximum": 10000,
- "minimum": 500,
- "type": "integer"
- },
- "revision": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "strategicReserveLimit": {
- "maximum": 5000,
- "minimum": 0,
- "type": "integer"
- },
- "units": {
- "items": {
- "properties": {
- "attachedTo": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "enhancements": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "formationOptions": {
- "items": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "maxItems": 4,
- "type": "array"
- },
- "group": {
- "enum": [
- "epic-hero",
- "character",
- "battleline",
- "infantry",
- "swarm",
- "mounted",
- "beast",
- "monster",
- "vehicle",
- "drone",
- "transport",
- "fortification",
- "other"
- ],
- "type": "string"
- },
- "joined": {
- "items": {
- "properties": {
- "label": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "label",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "note": {
- "maxLength": 500,
- "type": "string"
- },
- "points": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "prebattleRules": {
- "items": {
- "enum": [
- "infiltrators",
- "scouts"
- ],
- "type": "string"
- },
- "maxItems": 2,
- "type": "array"
- },
- "strategicReserveExempt": {
- "type": "boolean"
- },
- "transport": {
- "type": "boolean"
- },
- "transportRule": {
- "maxLength": 4000,
- "type": "string"
- },
- "upgrades": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "wargear": {
- "items": {
- "properties": {
- "count": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "count"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "warlord": {
- "type": "boolean"
- },
- "warlordEligible": {
- "type": "boolean"
- },
- "wounds": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "key",
- "name",
- "points",
- "models"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "waivedRules": {
- "items": {
- "enum": [
- "points-limit",
- "detachments",
- "detachment-points",
- "kotc-infantry",
- "kotc-warlord",
- "kotc-epic-heroes",
- "kotc-toughness",
- "kotc-datasheet-copies"
- ],
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- }
- },
- "required": [
- "catalogueId",
- "revision",
- "limit",
- "detachment",
- "disposition",
- "units"
- ],
- "type": "object"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "reminders": {
- "items": {
- "properties": {
- "ability": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "description": {
- "maxLength": 10000,
- "type": "string"
- },
- "key": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "timings": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "phase-start",
- "phase-end"
- ],
- "type": "string"
- },
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "any"
- ],
- "type": "string"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "turn-start",
- "turn-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "round-start",
- "round-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "const": "either",
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "unit": {
- "properties": {
- "index": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "index",
- "name"
- ],
- "type": "object"
- },
- "whileDestroyed": {
- "type": "boolean"
- }
- },
- "required": [
- "key",
- "ability",
- "description",
- "timings"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "remindersEnabled": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 20000,
- "type": "string"
- }
- },
- "required": [
- "name",
- "text"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "roster"
- ],
- "type": "object"
- },
- {
- "properties": {
- "destroyed": {
- "type": "boolean"
- },
- "kind": {
- "const": "set-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "destroyed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-prep",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "properties": {
- "deployed": {
- "type": "boolean"
- },
- "kind": {
- "const": "deploy-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "deployed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "formation": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "kind": {
- "const": "set-unit-formation",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "transportKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "formation"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-painted",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "painted"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "wound-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "damage-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-deployment",
- "type": "string"
- },
- "patternId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "patternId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-battlefield",
- "type": "string"
- },
- "patternId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "terrainLayoutId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "patternId",
- "terrainLayoutId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "use-stratagem",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "kind": {
- "const": "use-new-orders",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "secondaryKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "stratagemKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "stratagemKey",
- "secondaryKey",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "score-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "score-settlement",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "scores": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "category": {
- "const": "primary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "final": {
- "properties": {
- "claims": {
- "items": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "maxItems": 20,
- "type": "array"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "claims",
- "delta"
- ],
- "type": "object"
- }
- },
- "required": [
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "const": "secondary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "const": "achieved",
- "type": "string"
- }
- },
- "required": [
- "category",
- "key",
- "delta"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 31,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "scores"
- ],
- "type": "object"
- },
- {
- "properties": {
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-secondary-status",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "active",
- "achieved",
- "discarded",
- "returned"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "status"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondaries",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "minItems": 1,
- "type": "array"
- },
- "selected": {
- "const": true,
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "secondaries"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-draw",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-scoring",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "select-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reveal-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "begin-battle",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "adjust-cp",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "gainCp": {
- "type": "boolean"
- },
- "keys": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "kind": {
- "const": "resolve-tactical-hand",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "enum": [
- "primary",
- "secondary"
- ],
- "type": "string"
- },
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "score",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "correct-player",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "resource": {
- "enum": [
- "cp",
- "primary",
- "secondary"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "playerId",
- "resource",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "settle-opponent-turn",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "request-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "cancel-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "pause-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "resume-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "concededBy": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "end-battle",
- "type": "string"
- },
- "reason": {
- "enum": [
- "completed",
- "finished-early",
- "conceded"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reopen-battle",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "add-note",
- "type": "string"
- },
- "text": {
- "maxLength": 500,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "text"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "undo",
- "type": "string"
- },
- "target": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- }
- ]
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "attach-saved-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "rosterId"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "properties": {
+ "cardKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "select-mission",
+ "type": "string"
+ },
+ "occurrence": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "oneOf": [
+ {
+ "properties": {
+ "fallback": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "punishment",
+ "type": "string"
+ },
+ "qualified": {
+ "type": "boolean"
+ },
+ "unavailable": {
+ "const": true,
+ "type": "boolean"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "units",
+ "fallback",
+ "qualified"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "guards": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "guards",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "guards"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "tempting-target",
+ "type": "string"
+ },
+ "noMansLand": {
+ "type": "boolean"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "objective",
+ "notHome",
+ "noMansLand"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "beacon",
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "unit": {
+ "anyOf": [
+ {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "unit",
+ "note"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "allEligible": {
+ "type": "boolean"
+ },
+ "areas": {
+ "items": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 5,
+ "type": "array"
+ },
+ "kind": {
+ "const": "locate-and-deny",
+ "type": "string"
+ },
+ "outsideZone": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "areas",
+ "outsideZone",
+ "allEligible"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "controlled": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "sensor-sweep",
+ "type": "string"
+ },
+ "marker": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "playerId"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "marker",
+ "controlled"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "consecrations": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "consecrate",
+ "type": "string"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "qualified": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "consecrations",
+ "qualified",
+ "notHome"
+ ],
+ "type": "object"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "cardKey",
+ "occurrence",
+ "selection"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "clockLimitMinutes": {
+ "anyOf": [
+ {
+ "maximum": 300,
+ "minimum": 5,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "kind": {
+ "const": "configure-battle",
+ "type": "string"
+ },
+ "limit": {
+ "anyOf": [
+ {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "manual": {
+ "type": "boolean"
+ },
+ "missionPackId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerCount": {
+ "anyOf": [
+ {
+ "const": 2,
+ "type": "number"
+ },
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "teamBattle": {
+ "type": "boolean"
+ },
+ "terrainLayoutId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "twistId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "limit",
+ "missionPackId",
+ "terrainLayoutId",
+ "twistId",
+ "clockLimitMinutes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reset-setup",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "detach-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "eventToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "lock-league-rosters",
+ "type": "string"
+ },
+ "leagueToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "leagueToken"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-setup-step",
+ "type": "string"
+ },
+ "step": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "step"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-attacker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "attackerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-first-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-side-disposition",
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "attach-roster",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roster": {
+ "properties": {
+ "built": {
+ "properties": {
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachment": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "detachmentPointBudget": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachments": {
+ "items": {
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "points": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "points"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "edition": {
+ "properties": {
+ "description": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "id": {
+ "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "slug": {
+ "maxLength": 80,
+ "minLength": 1,
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "preview",
+ "released",
+ "retired"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "status"
+ ],
+ "type": "object"
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "note": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "pointsBudget": {
+ "maximum": 10000,
+ "minimum": 500,
+ "type": "integer"
+ },
+ "revision": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategicReserveLimit": {
+ "maximum": 5000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "enhancements": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "formationOptions": {
+ "items": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "group": {
+ "enum": [
+ "epic-hero",
+ "character",
+ "battleline",
+ "infantry",
+ "swarm",
+ "mounted",
+ "beast",
+ "monster",
+ "vehicle",
+ "drone",
+ "transport",
+ "fortification",
+ "other"
+ ],
+ "type": "string"
+ },
+ "joined": {
+ "items": {
+ "properties": {
+ "label": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "points": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prebattleRules": {
+ "items": {
+ "enum": [
+ "infiltrators",
+ "scouts"
+ ],
+ "type": "string"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "strategicReserveExempt": {
+ "type": "boolean"
+ },
+ "transport": {
+ "type": "boolean"
+ },
+ "transportRule": {
+ "maxLength": 4000,
+ "type": "string"
+ },
+ "upgrades": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "wargear": {
+ "items": {
+ "properties": {
+ "count": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "count"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "warlord": {
+ "type": "boolean"
+ },
+ "warlordEligible": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "points",
+ "models"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "catalogueId",
+ "revision",
+ "limit",
+ "detachment",
+ "disposition",
+ "units"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "lentBy": {
+ "properties": {
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 48,
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name"
+ ],
+ "type": "object"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "reminders": {
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "any"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "round-start",
+ "round-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "const": "either",
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ },
+ "whileDestroyed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 20000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "text"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "roster"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "destroyed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "set-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "destroyed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-prep",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "deployed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "deploy-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "deployed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "formation": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-unit-formation",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "transportKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "formation"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-painted",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "painted"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "wound-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "damage-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-deployment",
+ "type": "string"
+ },
+ "patternId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "patternId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-battlefield",
+ "type": "string"
+ },
+ "patternId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "terrainLayoutId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "patternId",
+ "terrainLayoutId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "use-stratagem",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "use-new-orders",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "secondaryKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "stratagemKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagemKey",
+ "secondaryKey",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "score-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "score-settlement",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "scores": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "category": {
+ "const": "primary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "final": {
+ "properties": {
+ "claims": {
+ "items": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "claims",
+ "delta"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "const": "secondary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "const": "achieved",
+ "type": "string"
+ }
+ },
+ "required": [
+ "category",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 31,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "scores"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-secondary-status",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "achieved",
+ "discarded",
+ "returned"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondaries",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "minItems": 1,
+ "type": "array"
+ },
+ "selected": {
+ "const": true,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-draw",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-scoring",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "select-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reveal-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "begin-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "adjust-cp",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "gainCp": {
+ "type": "boolean"
+ },
+ "keys": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "resolve-tactical-hand",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "score",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "correct-player",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "resource": {
+ "enum": [
+ "cp",
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "playerId",
+ "resource",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "settle-opponent-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "request-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "cancel-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "pause-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "resume-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "concededBy": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "end-battle",
+ "type": "string"
+ },
+ "reason": {
+ "enum": [
+ "completed",
+ "finished-early",
+ "conceded"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reopen-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "add-note",
+ "type": "string"
+ },
+ "text": {
+ "maxLength": 500,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "text"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "undo",
+ "type": "string"
+ },
+ "target": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "target"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "attach-saved-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "rosterId"
+ ],
+ "type": "object"
+ }
+]Input schema / properties / command / anyOfPrevious value: -[
- {
- "oneOf": [
- {
- "properties": {
- "cardKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "select-mission",
- "type": "string"
- },
- "occurrence": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "oneOf": [
- {
- "properties": {
- "fallback": {
- "type": "boolean"
- },
- "kind": {
- "const": "punishment",
- "type": "string"
- },
- "qualified": {
- "type": "boolean"
- },
- "unavailable": {
- "const": true,
- "type": "boolean"
- },
- "units": {
- "items": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "units",
- "fallback",
- "qualified"
- ],
- "type": "object"
- },
- {
- "properties": {
- "guards": {
- "items": {
- "properties": {
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "unit": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- }
- },
- "required": [
- "objective",
- "unit"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "kind": {
- "const": "guards",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "guards"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "tempting-target",
- "type": "string"
- },
- "noMansLand": {
- "type": "boolean"
- },
- "notHome": {
- "type": "boolean"
- },
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "objective",
- "notHome",
- "noMansLand"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "beacon",
- "type": "string"
- },
- "note": {
- "maxLength": 200,
- "type": "string"
- },
- "unit": {
- "anyOf": [
- {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "unit",
- "note"
- ],
- "type": "object"
- },
- {
- "properties": {
- "allEligible": {
- "type": "boolean"
- },
- "areas": {
- "items": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 5,
- "type": "array"
- },
- "kind": {
- "const": "locate-and-deny",
- "type": "string"
- },
- "outsideZone": {
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "areas",
- "outsideZone",
- "allEligible"
- ],
- "type": "object"
- },
- {
- "properties": {
- "controlled": {
- "type": "boolean"
- },
- "kind": {
- "const": "sensor-sweep",
- "type": "string"
- },
- "marker": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "playerId"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "marker",
- "controlled"
- ],
- "type": "object"
- },
- {
- "properties": {
- "consecrations": {
- "items": {
- "properties": {
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "unit": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- }
- },
- "required": [
- "objective",
- "unit"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "kind": {
- "const": "consecrate",
- "type": "string"
- },
- "notHome": {
- "type": "boolean"
- },
- "qualified": {
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "consecrations",
- "qualified",
- "notHome"
- ],
- "type": "object"
- }
- ]
- }
- },
- "required": [
- "kind",
- "cardKey",
- "occurrence",
- "selection"
- ],
- "type": "object"
- },
- {
- "properties": {
- "clockLimitMinutes": {
- "anyOf": [
- {
- "maximum": 300,
- "minimum": 5,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "kind": {
- "const": "configure-battle",
- "type": "string"
- },
- "limit": {
- "anyOf": [
- {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "missionPackId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerCount": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "teamBattle": {
- "type": "boolean"
- },
- "terrainLayoutId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "twistId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "limit",
- "missionPackId",
- "terrainLayoutId",
- "twistId",
- "clockLimitMinutes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reset-setup",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "detach-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "eventToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "lock-league-rosters",
- "type": "string"
- },
- "leagueToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "leagueToken"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-setup-step",
- "type": "string"
- },
- "step": {
- "maximum": 9,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "step"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-attacker",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "attackerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-first-turn",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-side-disposition",
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "side",
- "disposition"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "attach-roster",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "prep": {
- "anyOf": [
- {
- "properties": {
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "roster": {
- "properties": {
- "built": {
- "properties": {
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "detachment": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachmentIds": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "detachmentPointBudget": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachments": {
- "items": {
- "properties": {
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "points": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "points"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- },
- "disposition": {
- "anyOf": [
- {
- "maxLength": 64,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "edition": {
- "properties": {
- "description": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "id": {
- "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "slug": {
- "maxLength": 80,
- "minLength": 1,
- "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
- "type": "string"
- },
- "status": {
- "enum": [
- "preview",
- "released",
- "retired"
- ],
- "type": "string"
- }
- },
- "required": [
- "id",
- "name",
- "status"
- ],
- "type": "object"
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "picks": {
- "items": {
- "properties": {
- "attachedTo": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "choices": {
- "additionalProperties": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 60,
- "minimum": 1,
- "type": "integer"
- },
- "nickname": {
- "maxLength": 40,
- "type": "string"
- },
- "note": {
- "maxLength": 500,
- "type": "string"
- },
- "spreads": {
- "additionalProperties": {
- "additionalProperties": {
- "maximum": 60,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 64,
- "type": "string"
- },
- "type": "object"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "toggles": {
- "additionalProperties": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "entryId"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "revision": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "strategicReserveLimit": {
- "maximum": 5000,
- "minimum": 0,
- "type": "integer"
- },
- "units": {
- "items": {
- "properties": {
- "attachedTo": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "enhancements": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "formationOptions": {
- "items": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "maxItems": 4,
- "type": "array"
- },
- "group": {
- "enum": [
- "epic-hero",
- "character",
- "battleline",
- "infantry",
- "swarm",
- "mounted",
- "beast",
- "monster",
- "vehicle",
- "drone",
- "transport",
- "fortification",
- "other"
- ],
- "type": "string"
- },
- "joined": {
- "items": {
- "properties": {
- "label": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "label",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "nickname": {
- "maxLength": 40,
- "type": "string"
- },
- "note": {
- "maxLength": 500,
- "type": "string"
- },
- "points": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "prebattleRules": {
- "items": {
- "enum": [
- "infiltrators",
- "scouts"
- ],
- "type": "string"
- },
- "maxItems": 2,
- "type": "array"
- },
- "strategicReserveExempt": {
- "type": "boolean"
- },
- "transport": {
- "type": "boolean"
- },
- "transportRule": {
- "maxLength": 4000,
- "type": "string"
- },
- "upgrades": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "wargear": {
- "items": {
- "properties": {
- "count": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "count"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "warlord": {
- "type": "boolean"
- },
- "warlordEligible": {
- "type": "boolean"
- },
- "wounds": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "key",
- "name",
- "points",
- "models"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "waivedRules": {
- "items": {
- "enum": [
- "points-limit",
- "detachments",
- "detachment-points",
- "kotc-infantry",
- "kotc-warlord",
- "kotc-epic-heroes",
- "kotc-toughness",
- "kotc-datasheet-copies"
- ],
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- }
- },
- "required": [
- "catalogueId",
- "revision",
- "limit",
- "detachment",
- "disposition",
- "units"
- ],
- "type": "object"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "reminders": {
- "items": {
- "properties": {
- "ability": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "description": {
- "maxLength": 10000,
- "type": "string"
- },
- "key": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "timings": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "phase-start",
- "phase-end"
- ],
- "type": "string"
- },
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "any"
- ],
- "type": "string"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "turn-start",
- "turn-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "round-start",
- "round-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "const": "either",
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "unit": {
- "properties": {
- "index": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "index",
- "name"
- ],
- "type": "object"
- },
- "whileDestroyed": {
- "type": "boolean"
- }
- },
- "required": [
- "key",
- "ability",
- "description",
- "timings"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "remindersEnabled": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 20000,
- "type": "string"
- }
- },
- "required": [
- "name",
- "text"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "roster"
- ],
- "type": "object"
- },
- {
- "properties": {
- "destroyed": {
- "type": "boolean"
- },
- "kind": {
- "const": "set-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "destroyed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-prep",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "properties": {
- "deployed": {
- "type": "boolean"
- },
- "kind": {
- "const": "deploy-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "deployed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "formation": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "kind": {
- "const": "set-unit-formation",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "transportKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "formation"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-painted",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "painted"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "wound-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "damage-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-deployment",
- "type": "string"
- },
- "patternId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "patternId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-battlefield",
- "type": "string"
- },
- "patternId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "terrainLayoutId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "patternId",
- "terrainLayoutId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "use-stratagem",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "kind": {
- "const": "use-new-orders",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "secondaryKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "stratagemKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "stratagemKey",
- "secondaryKey",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "score-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "score-settlement",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "scores": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "category": {
- "const": "primary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "final": {
- "properties": {
- "claims": {
- "items": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "maxItems": 20,
- "type": "array"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "claims",
- "delta"
- ],
- "type": "object"
- }
- },
- "required": [
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "const": "secondary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "const": "achieved",
- "type": "string"
- }
- },
- "required": [
- "category",
- "key",
- "delta"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 31,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "scores"
- ],
- "type": "object"
- },
- {
- "properties": {
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-secondary-status",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "active",
- "achieved",
- "discarded",
- "returned"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "status"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondaries",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "minItems": 1,
- "type": "array"
- },
- "selected": {
- "const": true,
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "secondaries"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-draw",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-scoring",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "select-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reveal-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "begin-battle",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "adjust-cp",
- "type": "string"
- },
- "missed": {
- "properties": {
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "turn": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "round",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "gainCp": {
- "type": "boolean"
- },
- "keys": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "kind": {
- "const": "resolve-tactical-hand",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "enum": [
- "primary",
- "secondary"
- ],
- "type": "string"
- },
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "score",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "correct-player",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "resource": {
- "enum": [
- "cp",
- "primary",
- "secondary"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "playerId",
- "resource",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "settle-opponent-turn",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "request-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "cancel-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "pause-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "resume-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "concededBy": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "end-battle",
- "type": "string"
- },
- "reason": {
- "enum": [
- "completed",
- "finished-early",
- "conceded"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reopen-battle",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "undo",
- "type": "string"
- },
- "target": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- }
- ]
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "attach-saved-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "rosterId"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "properties": {
+ "cardKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "select-mission",
+ "type": "string"
+ },
+ "occurrence": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "oneOf": [
+ {
+ "properties": {
+ "fallback": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "punishment",
+ "type": "string"
+ },
+ "qualified": {
+ "type": "boolean"
+ },
+ "unavailable": {
+ "const": true,
+ "type": "boolean"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "units",
+ "fallback",
+ "qualified"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "guards": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "guards",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "guards"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "tempting-target",
+ "type": "string"
+ },
+ "noMansLand": {
+ "type": "boolean"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "objective",
+ "notHome",
+ "noMansLand"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "beacon",
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "unit": {
+ "anyOf": [
+ {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "unit",
+ "note"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "allEligible": {
+ "type": "boolean"
+ },
+ "areas": {
+ "items": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 5,
+ "type": "array"
+ },
+ "kind": {
+ "const": "locate-and-deny",
+ "type": "string"
+ },
+ "outsideZone": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "areas",
+ "outsideZone",
+ "allEligible"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "controlled": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "sensor-sweep",
+ "type": "string"
+ },
+ "marker": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "playerId"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "marker",
+ "controlled"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "consecrations": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "consecrate",
+ "type": "string"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "qualified": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "consecrations",
+ "qualified",
+ "notHome"
+ ],
+ "type": "object"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "cardKey",
+ "occurrence",
+ "selection"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "clockLimitMinutes": {
+ "anyOf": [
+ {
+ "maximum": 300,
+ "minimum": 5,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "kind": {
+ "const": "configure-battle",
+ "type": "string"
+ },
+ "limit": {
+ "anyOf": [
+ {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "manual": {
+ "type": "boolean"
+ },
+ "missionPackId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerCount": {
+ "anyOf": [
+ {
+ "const": 2,
+ "type": "number"
+ },
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "teamBattle": {
+ "type": "boolean"
+ },
+ "terrainLayoutId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "twistId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "limit",
+ "missionPackId",
+ "terrainLayoutId",
+ "twistId",
+ "clockLimitMinutes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reset-setup",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "detach-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "eventToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "lock-league-rosters",
+ "type": "string"
+ },
+ "leagueToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "leagueToken"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-setup-step",
+ "type": "string"
+ },
+ "step": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "step"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-attacker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "attackerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-first-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-side-disposition",
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "attach-roster",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roster": {
+ "properties": {
+ "built": {
+ "properties": {
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachment": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "detachmentPointBudget": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachments": {
+ "items": {
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "points": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "points"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "edition": {
+ "properties": {
+ "description": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "id": {
+ "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "slug": {
+ "maxLength": 80,
+ "minLength": 1,
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "preview",
+ "released",
+ "retired"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "status"
+ ],
+ "type": "object"
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "note": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "pointsBudget": {
+ "maximum": 10000,
+ "minimum": 500,
+ "type": "integer"
+ },
+ "revision": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategicReserveLimit": {
+ "maximum": 5000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "enhancements": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "formationOptions": {
+ "items": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "group": {
+ "enum": [
+ "epic-hero",
+ "character",
+ "battleline",
+ "infantry",
+ "swarm",
+ "mounted",
+ "beast",
+ "monster",
+ "vehicle",
+ "drone",
+ "transport",
+ "fortification",
+ "other"
+ ],
+ "type": "string"
+ },
+ "joined": {
+ "items": {
+ "properties": {
+ "label": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "points": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prebattleRules": {
+ "items": {
+ "enum": [
+ "infiltrators",
+ "scouts"
+ ],
+ "type": "string"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "strategicReserveExempt": {
+ "type": "boolean"
+ },
+ "transport": {
+ "type": "boolean"
+ },
+ "transportRule": {
+ "maxLength": 4000,
+ "type": "string"
+ },
+ "upgrades": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "wargear": {
+ "items": {
+ "properties": {
+ "count": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "count"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "warlord": {
+ "type": "boolean"
+ },
+ "warlordEligible": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "points",
+ "models"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "catalogueId",
+ "revision",
+ "limit",
+ "detachment",
+ "disposition",
+ "units"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "reminders": {
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "any"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "round-start",
+ "round-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "const": "either",
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ },
+ "whileDestroyed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 20000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "text"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "roster"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "destroyed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "set-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "destroyed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-prep",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "deployed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "deploy-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "deployed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "formation": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-unit-formation",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "transportKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "formation"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-painted",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "painted"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "wound-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "damage-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-deployment",
+ "type": "string"
+ },
+ "patternId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "patternId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-battlefield",
+ "type": "string"
+ },
+ "patternId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "terrainLayoutId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "patternId",
+ "terrainLayoutId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "use-stratagem",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "use-new-orders",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "secondaryKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "stratagemKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagemKey",
+ "secondaryKey",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "score-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "score-settlement",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "scores": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "category": {
+ "const": "primary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "final": {
+ "properties": {
+ "claims": {
+ "items": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "claims",
+ "delta"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "const": "secondary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "const": "achieved",
+ "type": "string"
+ }
+ },
+ "required": [
+ "category",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 31,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "scores"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-secondary-status",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "achieved",
+ "discarded",
+ "returned"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondaries",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "minItems": 1,
+ "type": "array"
+ },
+ "selected": {
+ "const": true,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-draw",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-scoring",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "select-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reveal-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "begin-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "adjust-cp",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "gainCp": {
+ "type": "boolean"
+ },
+ "keys": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "resolve-tactical-hand",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "score",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "correct-player",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "resource": {
+ "enum": [
+ "cp",
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "playerId",
+ "resource",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "settle-opponent-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "request-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "cancel-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "pause-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "resume-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "concededBy": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "end-battle",
+ "type": "string"
+ },
+ "reason": {
+ "enum": [
+ "completed",
+ "finished-early",
+ "conceded"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reopen-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "add-note",
+ "type": "string"
+ },
+ "text": {
+ "maxLength": 500,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "text"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "undo",
+ "type": "string"
+ },
+ "target": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "target"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "attach-saved-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "rosterId"
+ ],
+ "type": "object"
+ }
+]Input schema / properties / command / anyOfPrevious value: -[
- {
- "oneOf": [
- {
- "properties": {
- "cardKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "select-mission",
- "type": "string"
- },
- "occurrence": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "oneOf": [
- {
- "properties": {
- "fallback": {
- "type": "boolean"
- },
- "kind": {
- "const": "punishment",
- "type": "string"
- },
- "qualified": {
- "type": "boolean"
- },
- "unavailable": {
- "const": true,
- "type": "boolean"
- },
- "units": {
- "items": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "units",
- "fallback",
- "qualified"
- ],
- "type": "object"
- },
- {
- "properties": {
- "guards": {
- "items": {
- "properties": {
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "unit": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- }
- },
- "required": [
- "objective",
- "unit"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "kind": {
- "const": "guards",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "guards"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "tempting-target",
- "type": "string"
- },
- "noMansLand": {
- "type": "boolean"
- },
- "notHome": {
- "type": "boolean"
- },
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "objective",
- "notHome",
- "noMansLand"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "beacon",
- "type": "string"
- },
- "note": {
- "maxLength": 200,
- "type": "string"
- },
- "unit": {
- "anyOf": [
- {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "unit",
- "note"
- ],
- "type": "object"
- },
- {
- "properties": {
- "allEligible": {
- "type": "boolean"
- },
- "areas": {
- "items": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 5,
- "type": "array"
- },
- "kind": {
- "const": "locate-and-deny",
- "type": "string"
- },
- "outsideZone": {
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "areas",
- "outsideZone",
- "allEligible"
- ],
- "type": "object"
- },
- {
- "properties": {
- "controlled": {
- "type": "boolean"
- },
- "kind": {
- "const": "sensor-sweep",
- "type": "string"
- },
- "marker": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "playerId"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "marker",
- "controlled"
- ],
- "type": "object"
- },
- {
- "properties": {
- "consecrations": {
- "items": {
- "properties": {
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "unit": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- }
- },
- "required": [
- "objective",
- "unit"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "kind": {
- "const": "consecrate",
- "type": "string"
- },
- "notHome": {
- "type": "boolean"
- },
- "qualified": {
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "consecrations",
- "qualified",
- "notHome"
- ],
- "type": "object"
- }
- ]
- }
- },
- "required": [
- "kind",
- "cardKey",
- "occurrence",
- "selection"
- ],
- "type": "object"
- },
- {
- "properties": {
- "clockLimitMinutes": {
- "anyOf": [
- {
- "maximum": 300,
- "minimum": 5,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "kind": {
- "const": "configure-battle",
- "type": "string"
- },
- "limit": {
- "anyOf": [
- {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "missionPackId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerCount": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "teamBattle": {
- "type": "boolean"
- },
- "terrainLayoutId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "twistId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "limit",
- "missionPackId",
- "terrainLayoutId",
- "twistId",
- "clockLimitMinutes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reset-setup",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "detach-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "eventToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "lock-league-rosters",
- "type": "string"
- },
- "leagueToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "leagueToken"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-setup-step",
- "type": "string"
- },
- "step": {
- "maximum": 9,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "step"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-attacker",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "attackerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-first-turn",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-side-disposition",
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "side",
- "disposition"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "attach-roster",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "prep": {
- "anyOf": [
- {
- "properties": {
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "roster": {
- "properties": {
- "built": {
- "properties": {
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "detachment": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachmentIds": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "detachmentPointBudget": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachments": {
- "items": {
- "properties": {
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "points": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "points"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- },
- "disposition": {
- "anyOf": [
- {
- "maxLength": 64,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "edition": {
- "properties": {
- "description": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "id": {
- "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "slug": {
- "maxLength": 80,
- "minLength": 1,
- "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
- "type": "string"
- },
- "status": {
- "enum": [
- "preview",
- "released",
- "retired"
- ],
- "type": "string"
- }
- },
- "required": [
- "id",
- "name",
- "status"
- ],
- "type": "object"
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "picks": {
- "items": {
- "properties": {
- "attachedTo": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "choices": {
- "additionalProperties": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 60,
- "minimum": 1,
- "type": "integer"
- },
- "nickname": {
- "maxLength": 40,
- "type": "string"
- },
- "note": {
- "maxLength": 500,
- "type": "string"
- },
- "spreads": {
- "additionalProperties": {
- "additionalProperties": {
- "maximum": 60,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 64,
- "type": "string"
- },
- "type": "object"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "toggles": {
- "additionalProperties": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "entryId"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "revision": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "strategicReserveLimit": {
- "maximum": 5000,
- "minimum": 0,
- "type": "integer"
- },
- "units": {
- "items": {
- "properties": {
- "attachedTo": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "enhancements": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "formationOptions": {
- "items": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "maxItems": 4,
- "type": "array"
- },
- "group": {
- "enum": [
- "epic-hero",
- "character",
- "battleline",
- "infantry",
- "swarm",
- "mounted",
- "beast",
- "monster",
- "vehicle",
- "drone",
- "transport",
- "fortification",
- "other"
- ],
- "type": "string"
- },
- "joined": {
- "items": {
- "properties": {
- "label": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "label",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "nickname": {
- "maxLength": 40,
- "type": "string"
- },
- "note": {
- "maxLength": 500,
- "type": "string"
- },
- "points": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "prebattleRules": {
- "items": {
- "enum": [
- "infiltrators",
- "scouts"
- ],
- "type": "string"
- },
- "maxItems": 2,
- "type": "array"
- },
- "strategicReserveExempt": {
- "type": "boolean"
- },
- "transport": {
- "type": "boolean"
- },
- "transportRule": {
- "maxLength": 4000,
- "type": "string"
- },
- "upgrades": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "wargear": {
- "items": {
- "properties": {
- "count": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "count"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "warlord": {
- "type": "boolean"
- },
- "warlordEligible": {
- "type": "boolean"
- },
- "wounds": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "key",
- "name",
- "points",
- "models"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "waivedRules": {
- "items": {
- "enum": [
- "points-limit",
- "detachments",
- "detachment-points",
- "kotc-infantry",
- "kotc-warlord",
- "kotc-epic-heroes",
- "kotc-toughness",
- "kotc-datasheet-copies"
- ],
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- }
- },
- "required": [
- "catalogueId",
- "revision",
- "limit",
- "detachment",
- "disposition",
- "units"
- ],
- "type": "object"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "reminders": {
- "items": {
- "properties": {
- "ability": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "description": {
- "maxLength": 10000,
- "type": "string"
- },
- "key": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "timings": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "phase-start",
- "phase-end"
- ],
- "type": "string"
- },
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "any"
- ],
- "type": "string"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "turn-start",
- "turn-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "round-start",
- "round-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "const": "either",
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "unit": {
- "properties": {
- "index": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "index",
- "name"
- ],
- "type": "object"
- },
- "whileDestroyed": {
- "type": "boolean"
- }
- },
- "required": [
- "key",
- "ability",
- "description",
- "timings"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "remindersEnabled": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 20000,
- "type": "string"
- }
- },
- "required": [
- "name",
- "text"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "roster"
- ],
- "type": "object"
- },
- {
- "properties": {
- "destroyed": {
- "type": "boolean"
- },
- "kind": {
- "const": "set-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "destroyed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-prep",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "properties": {
- "deployed": {
- "type": "boolean"
- },
- "kind": {
- "const": "deploy-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "deployed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "formation": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "kind": {
- "const": "set-unit-formation",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "transportKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "formation"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-painted",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "painted"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "wound-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "damage-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-deployment",
- "type": "string"
- },
- "patternId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "patternId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-battlefield",
- "type": "string"
- },
- "patternId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "terrainLayoutId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "patternId",
- "terrainLayoutId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "use-stratagem",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "kind": {
- "const": "use-new-orders",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "secondaryKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "stratagemKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "stratagemKey",
- "secondaryKey",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "score-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "score-settlement",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "scores": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "category": {
- "const": "primary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "final": {
- "properties": {
- "claims": {
- "items": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "maxItems": 20,
- "type": "array"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "claims",
- "delta"
- ],
- "type": "object"
- }
- },
- "required": [
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "const": "secondary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "const": "achieved",
- "type": "string"
- }
- },
- "required": [
- "category",
- "key",
- "delta"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 31,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "scores"
- ],
- "type": "object"
- },
- {
- "properties": {
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-secondary-status",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "active",
- "achieved",
- "discarded",
- "returned"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "status"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondaries",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "minItems": 1,
- "type": "array"
- },
- "selected": {
- "const": true,
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "secondaries"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-draw",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-scoring",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "select-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reveal-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "begin-battle",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "adjust-cp",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "gainCp": {
- "type": "boolean"
- },
- "keys": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "kind": {
- "const": "resolve-tactical-hand",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "enum": [
- "primary",
- "secondary"
- ],
- "type": "string"
- },
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "score",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "correct-player",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "resource": {
- "enum": [
- "cp",
- "primary",
- "secondary"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "playerId",
- "resource",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "settle-opponent-turn",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "request-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "cancel-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "pause-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "resume-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "concededBy": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "end-battle",
- "type": "string"
- },
- "reason": {
- "enum": [
- "completed",
- "finished-early",
- "conceded"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reopen-battle",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "undo",
- "type": "string"
- },
- "target": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- }
- ]
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "attach-saved-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "rosterId"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "properties": {
+ "cardKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "select-mission",
+ "type": "string"
+ },
+ "occurrence": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "oneOf": [
+ {
+ "properties": {
+ "fallback": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "punishment",
+ "type": "string"
+ },
+ "qualified": {
+ "type": "boolean"
+ },
+ "unavailable": {
+ "const": true,
+ "type": "boolean"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "units",
+ "fallback",
+ "qualified"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "guards": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "guards",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "guards"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "tempting-target",
+ "type": "string"
+ },
+ "noMansLand": {
+ "type": "boolean"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "objective",
+ "notHome",
+ "noMansLand"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "beacon",
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "unit": {
+ "anyOf": [
+ {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "unit",
+ "note"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "allEligible": {
+ "type": "boolean"
+ },
+ "areas": {
+ "items": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 5,
+ "type": "array"
+ },
+ "kind": {
+ "const": "locate-and-deny",
+ "type": "string"
+ },
+ "outsideZone": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "areas",
+ "outsideZone",
+ "allEligible"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "controlled": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "sensor-sweep",
+ "type": "string"
+ },
+ "marker": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "playerId"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "marker",
+ "controlled"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "consecrations": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "consecrate",
+ "type": "string"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "qualified": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "consecrations",
+ "qualified",
+ "notHome"
+ ],
+ "type": "object"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "cardKey",
+ "occurrence",
+ "selection"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "clockLimitMinutes": {
+ "anyOf": [
+ {
+ "maximum": 300,
+ "minimum": 5,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "kind": {
+ "const": "configure-battle",
+ "type": "string"
+ },
+ "limit": {
+ "anyOf": [
+ {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "missionPackId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerCount": {
+ "anyOf": [
+ {
+ "const": 2,
+ "type": "number"
+ },
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "teamBattle": {
+ "type": "boolean"
+ },
+ "terrainLayoutId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "twistId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "limit",
+ "missionPackId",
+ "terrainLayoutId",
+ "twistId",
+ "clockLimitMinutes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reset-setup",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "detach-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "eventToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "lock-league-rosters",
+ "type": "string"
+ },
+ "leagueToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "leagueToken"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-setup-step",
+ "type": "string"
+ },
+ "step": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "step"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-attacker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "attackerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-first-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-side-disposition",
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "attach-roster",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roster": {
+ "properties": {
+ "built": {
+ "properties": {
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachment": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "detachmentPointBudget": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachments": {
+ "items": {
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "points": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "points"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "edition": {
+ "properties": {
+ "description": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "id": {
+ "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "slug": {
+ "maxLength": 80,
+ "minLength": 1,
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "preview",
+ "released",
+ "retired"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "status"
+ ],
+ "type": "object"
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "nickname": {
+ "maxLength": 40,
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "revision": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategicReserveLimit": {
+ "maximum": 5000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "enhancements": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "formationOptions": {
+ "items": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "group": {
+ "enum": [
+ "epic-hero",
+ "character",
+ "battleline",
+ "infantry",
+ "swarm",
+ "mounted",
+ "beast",
+ "monster",
+ "vehicle",
+ "drone",
+ "transport",
+ "fortification",
+ "other"
+ ],
+ "type": "string"
+ },
+ "joined": {
+ "items": {
+ "properties": {
+ "label": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "nickname": {
+ "maxLength": 40,
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "points": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prebattleRules": {
+ "items": {
+ "enum": [
+ "infiltrators",
+ "scouts"
+ ],
+ "type": "string"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "strategicReserveExempt": {
+ "type": "boolean"
+ },
+ "transport": {
+ "type": "boolean"
+ },
+ "transportRule": {
+ "maxLength": 4000,
+ "type": "string"
+ },
+ "upgrades": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "wargear": {
+ "items": {
+ "properties": {
+ "count": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "count"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "warlord": {
+ "type": "boolean"
+ },
+ "warlordEligible": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "points",
+ "models"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "catalogueId",
+ "revision",
+ "limit",
+ "detachment",
+ "disposition",
+ "units"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "reminders": {
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "any"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "round-start",
+ "round-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "const": "either",
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ },
+ "whileDestroyed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 20000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "text"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "roster"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "destroyed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "set-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "destroyed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-prep",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "deployed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "deploy-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "deployed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "formation": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-unit-formation",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "transportKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "formation"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-painted",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "painted"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "wound-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "damage-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-deployment",
+ "type": "string"
+ },
+ "patternId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "patternId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-battlefield",
+ "type": "string"
+ },
+ "patternId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "terrainLayoutId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "patternId",
+ "terrainLayoutId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "use-stratagem",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "use-new-orders",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "secondaryKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "stratagemKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagemKey",
+ "secondaryKey",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "score-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "score-settlement",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "scores": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "category": {
+ "const": "primary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "final": {
+ "properties": {
+ "claims": {
+ "items": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "claims",
+ "delta"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "const": "secondary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "const": "achieved",
+ "type": "string"
+ }
+ },
+ "required": [
+ "category",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 31,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "scores"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-secondary-status",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "achieved",
+ "discarded",
+ "returned"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondaries",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "minItems": 1,
+ "type": "array"
+ },
+ "selected": {
+ "const": true,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-draw",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-scoring",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "select-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reveal-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "begin-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "adjust-cp",
+ "type": "string"
+ },
+ "missed": {
+ "properties": {
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "turn": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "round",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "gainCp": {
+ "type": "boolean"
+ },
+ "keys": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "resolve-tactical-hand",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "score",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "correct-player",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "resource": {
+ "enum": [
+ "cp",
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "playerId",
+ "resource",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "settle-opponent-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "request-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "cancel-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "pause-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "resume-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "concededBy": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "end-battle",
+ "type": "string"
+ },
+ "reason": {
+ "enum": [
+ "completed",
+ "finished-early",
+ "conceded"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reopen-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "undo",
+ "type": "string"
+ },
+ "target": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "target"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "attach-saved-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "rosterId"
+ ],
+ "type": "object"
+ }
+]Input schema / properties / command / anyOfPrevious value: -[
- {
- "oneOf": [
- {
- "properties": {
- "cardKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "select-mission",
- "type": "string"
- },
- "occurrence": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "oneOf": [
- {
- "properties": {
- "fallback": {
- "type": "boolean"
- },
- "kind": {
- "const": "punishment",
- "type": "string"
- },
- "qualified": {
- "type": "boolean"
- },
- "unavailable": {
- "const": true,
- "type": "boolean"
- },
- "units": {
- "items": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "units",
- "fallback",
- "qualified"
- ],
- "type": "object"
- },
- {
- "properties": {
- "guards": {
- "items": {
- "properties": {
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "unit": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- }
- },
- "required": [
- "objective",
- "unit"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "kind": {
- "const": "guards",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "guards"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "tempting-target",
- "type": "string"
- },
- "noMansLand": {
- "type": "boolean"
- },
- "notHome": {
- "type": "boolean"
- },
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "objective",
- "notHome",
- "noMansLand"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "beacon",
- "type": "string"
- },
- "note": {
- "maxLength": 200,
- "type": "string"
- },
- "unit": {
- "anyOf": [
- {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "unit",
- "note"
- ],
- "type": "object"
- },
- {
- "properties": {
- "allEligible": {
- "type": "boolean"
- },
- "areas": {
- "items": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 5,
- "type": "array"
- },
- "kind": {
- "const": "locate-and-deny",
- "type": "string"
- },
- "outsideZone": {
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "areas",
- "outsideZone",
- "allEligible"
- ],
- "type": "object"
- },
- {
- "properties": {
- "controlled": {
- "type": "boolean"
- },
- "kind": {
- "const": "sensor-sweep",
- "type": "string"
- },
- "marker": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "playerId"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "marker",
- "controlled"
- ],
- "type": "object"
- },
- {
- "properties": {
- "consecrations": {
- "items": {
- "properties": {
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "unit": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- }
- },
- "required": [
- "objective",
- "unit"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "kind": {
- "const": "consecrate",
- "type": "string"
- },
- "notHome": {
- "type": "boolean"
- },
- "qualified": {
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "consecrations",
- "qualified",
- "notHome"
- ],
- "type": "object"
- }
- ]
- }
- },
- "required": [
- "kind",
- "cardKey",
- "occurrence",
- "selection"
- ],
- "type": "object"
- },
- {
- "properties": {
- "clockLimitMinutes": {
- "anyOf": [
- {
- "maximum": 300,
- "minimum": 5,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "kind": {
- "const": "configure-battle",
- "type": "string"
- },
- "limit": {
- "anyOf": [
- {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "missionPackId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerCount": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "teamBattle": {
- "type": "boolean"
- },
- "terrainLayoutId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "twistId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "limit",
- "missionPackId",
- "terrainLayoutId",
- "twistId",
- "clockLimitMinutes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reset-setup",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "detach-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "eventToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "lock-league-rosters",
- "type": "string"
- },
- "leagueToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "leagueToken"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-setup-step",
- "type": "string"
- },
- "step": {
- "maximum": 9,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "step"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-attacker",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "attackerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-first-turn",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-side-disposition",
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "side",
- "disposition"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "attach-roster",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "prep": {
- "anyOf": [
- {
- "properties": {
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "roster": {
- "properties": {
- "built": {
- "properties": {
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "detachment": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachmentIds": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "detachmentPointBudget": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachments": {
- "items": {
- "properties": {
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "points": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "points"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- },
- "disposition": {
- "anyOf": [
- {
- "maxLength": 64,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "edition": {
- "properties": {
- "description": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "id": {
- "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "slug": {
- "maxLength": 80,
- "minLength": 1,
- "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
- "type": "string"
- },
- "status": {
- "enum": [
- "preview",
- "released",
- "retired"
- ],
- "type": "string"
- }
- },
- "required": [
- "id",
- "name",
- "status"
- ],
- "type": "object"
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "picks": {
- "items": {
- "properties": {
- "attachedTo": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "choices": {
- "additionalProperties": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 60,
- "minimum": 1,
- "type": "integer"
- },
- "spreads": {
- "additionalProperties": {
- "additionalProperties": {
- "maximum": 60,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 64,
- "type": "string"
- },
- "type": "object"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "toggles": {
- "additionalProperties": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "entryId"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "revision": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "strategicReserveLimit": {
- "maximum": 5000,
- "minimum": 0,
- "type": "integer"
- },
- "units": {
- "items": {
- "properties": {
- "attachedTo": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "enhancements": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "formationOptions": {
- "items": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "maxItems": 4,
- "type": "array"
- },
- "group": {
- "enum": [
- "epic-hero",
- "character",
- "battleline",
- "infantry",
- "swarm",
- "mounted",
- "beast",
- "monster",
- "vehicle",
- "drone",
- "transport",
- "fortification",
- "other"
- ],
- "type": "string"
- },
- "joined": {
- "items": {
- "properties": {
- "label": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "label",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "points": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "prebattleRules": {
- "items": {
- "enum": [
- "infiltrators",
- "scouts"
- ],
- "type": "string"
- },
- "maxItems": 2,
- "type": "array"
- },
- "strategicReserveExempt": {
- "type": "boolean"
- },
- "transport": {
- "type": "boolean"
- },
- "transportRule": {
- "maxLength": 4000,
- "type": "string"
- },
- "upgrades": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "wargear": {
- "items": {
- "properties": {
- "count": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "count"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "warlord": {
- "type": "boolean"
- },
- "warlordEligible": {
- "type": "boolean"
- },
- "wounds": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "key",
- "name",
- "points",
- "models"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "waivedRules": {
- "items": {
- "enum": [
- "points-limit",
- "detachments",
- "detachment-points",
- "kotc-infantry",
- "kotc-warlord",
- "kotc-epic-heroes",
- "kotc-toughness",
- "kotc-datasheet-copies"
- ],
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- }
- },
- "required": [
- "catalogueId",
- "revision",
- "limit",
- "detachment",
- "disposition",
- "units"
- ],
- "type": "object"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "reminders": {
- "items": {
- "properties": {
- "ability": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "description": {
- "maxLength": 10000,
- "type": "string"
- },
- "key": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "timings": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "phase-start",
- "phase-end"
- ],
- "type": "string"
- },
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "any"
- ],
- "type": "string"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "turn-start",
- "turn-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "round-start",
- "round-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "const": "either",
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "unit": {
- "properties": {
- "index": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "index",
- "name"
- ],
- "type": "object"
- },
- "whileDestroyed": {
- "type": "boolean"
- }
- },
- "required": [
- "key",
- "ability",
- "description",
- "timings"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "remindersEnabled": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 20000,
- "type": "string"
- }
- },
- "required": [
- "name",
- "text"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "roster"
- ],
- "type": "object"
- },
- {
- "properties": {
- "destroyed": {
- "type": "boolean"
- },
- "kind": {
- "const": "set-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "destroyed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-prep",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "properties": {
- "deployed": {
- "type": "boolean"
- },
- "kind": {
- "const": "deploy-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "deployed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "formation": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "kind": {
- "const": "set-unit-formation",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "transportKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "formation"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-painted",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "painted"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "wound-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "damage-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-deployment",
- "type": "string"
- },
- "patternId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "patternId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-battlefield",
- "type": "string"
- },
- "patternId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "terrainLayoutId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "patternId",
- "terrainLayoutId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "use-stratagem",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "kind": {
- "const": "use-new-orders",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "secondaryKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "stratagemKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "stratagemKey",
- "secondaryKey",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "score-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "score-settlement",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "scores": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "category": {
- "const": "primary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "final": {
- "properties": {
- "claims": {
- "items": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "maxItems": 20,
- "type": "array"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "claims",
- "delta"
- ],
- "type": "object"
- }
- },
- "required": [
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "const": "secondary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "const": "achieved",
- "type": "string"
- }
- },
- "required": [
- "category",
- "key",
- "delta"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 31,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "scores"
- ],
- "type": "object"
- },
- {
- "properties": {
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-secondary-status",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "active",
- "achieved",
- "discarded",
- "returned"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "status"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondaries",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "minItems": 1,
- "type": "array"
- },
- "selected": {
- "const": true,
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "secondaries"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-draw",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-scoring",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "select-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon",
- "locate-and-deny",
- "sensor-sweep",
- "consecrate"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reveal-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "begin-battle",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "adjust-cp",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "gainCp": {
- "type": "boolean"
- },
- "keys": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "kind": {
- "const": "resolve-tactical-hand",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "enum": [
- "primary",
- "secondary"
- ],
- "type": "string"
- },
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "score",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "correct-player",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "resource": {
- "enum": [
- "cp",
- "primary",
- "secondary"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "playerId",
- "resource",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "settle-opponent-turn",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "request-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "cancel-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "pause-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "resume-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "concededBy": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "end-battle",
- "type": "string"
- },
- "reason": {
- "enum": [
- "completed",
- "finished-early",
- "conceded"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reopen-battle",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "undo",
- "type": "string"
- },
- "target": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- }
- ]
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "attach-saved-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "rosterId"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "properties": {
+ "cardKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "select-mission",
+ "type": "string"
+ },
+ "occurrence": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "oneOf": [
+ {
+ "properties": {
+ "fallback": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "punishment",
+ "type": "string"
+ },
+ "qualified": {
+ "type": "boolean"
+ },
+ "unavailable": {
+ "const": true,
+ "type": "boolean"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "units",
+ "fallback",
+ "qualified"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "guards": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "guards",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "guards"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "tempting-target",
+ "type": "string"
+ },
+ "noMansLand": {
+ "type": "boolean"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "objective",
+ "notHome",
+ "noMansLand"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "beacon",
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "unit": {
+ "anyOf": [
+ {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "unit",
+ "note"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "allEligible": {
+ "type": "boolean"
+ },
+ "areas": {
+ "items": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 5,
+ "type": "array"
+ },
+ "kind": {
+ "const": "locate-and-deny",
+ "type": "string"
+ },
+ "outsideZone": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "areas",
+ "outsideZone",
+ "allEligible"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "controlled": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "sensor-sweep",
+ "type": "string"
+ },
+ "marker": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "playerId"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "marker",
+ "controlled"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "consecrations": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "consecrate",
+ "type": "string"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "qualified": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "consecrations",
+ "qualified",
+ "notHome"
+ ],
+ "type": "object"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "cardKey",
+ "occurrence",
+ "selection"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "clockLimitMinutes": {
+ "anyOf": [
+ {
+ "maximum": 300,
+ "minimum": 5,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "kind": {
+ "const": "configure-battle",
+ "type": "string"
+ },
+ "limit": {
+ "anyOf": [
+ {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "missionPackId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerCount": {
+ "anyOf": [
+ {
+ "const": 2,
+ "type": "number"
+ },
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "teamBattle": {
+ "type": "boolean"
+ },
+ "terrainLayoutId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "twistId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "limit",
+ "missionPackId",
+ "terrainLayoutId",
+ "twistId",
+ "clockLimitMinutes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reset-setup",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "detach-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "eventToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "lock-league-rosters",
+ "type": "string"
+ },
+ "leagueToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "leagueToken"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-setup-step",
+ "type": "string"
+ },
+ "step": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "step"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-attacker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "attackerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-first-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-side-disposition",
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "attach-roster",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roster": {
+ "properties": {
+ "built": {
+ "properties": {
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachment": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "detachmentPointBudget": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachments": {
+ "items": {
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "points": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "points"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "edition": {
+ "properties": {
+ "description": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "id": {
+ "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "slug": {
+ "maxLength": 80,
+ "minLength": 1,
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "preview",
+ "released",
+ "retired"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "status"
+ ],
+ "type": "object"
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "nickname": {
+ "maxLength": 40,
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "revision": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategicReserveLimit": {
+ "maximum": 5000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "enhancements": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "formationOptions": {
+ "items": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "group": {
+ "enum": [
+ "epic-hero",
+ "character",
+ "battleline",
+ "infantry",
+ "swarm",
+ "mounted",
+ "beast",
+ "monster",
+ "vehicle",
+ "drone",
+ "transport",
+ "fortification",
+ "other"
+ ],
+ "type": "string"
+ },
+ "joined": {
+ "items": {
+ "properties": {
+ "label": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "nickname": {
+ "maxLength": 40,
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "points": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prebattleRules": {
+ "items": {
+ "enum": [
+ "infiltrators",
+ "scouts"
+ ],
+ "type": "string"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "strategicReserveExempt": {
+ "type": "boolean"
+ },
+ "transport": {
+ "type": "boolean"
+ },
+ "transportRule": {
+ "maxLength": 4000,
+ "type": "string"
+ },
+ "upgrades": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "wargear": {
+ "items": {
+ "properties": {
+ "count": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "count"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "warlord": {
+ "type": "boolean"
+ },
+ "warlordEligible": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "points",
+ "models"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "catalogueId",
+ "revision",
+ "limit",
+ "detachment",
+ "disposition",
+ "units"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "reminders": {
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "any"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "round-start",
+ "round-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "const": "either",
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ },
+ "whileDestroyed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 20000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "text"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "roster"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "destroyed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "set-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "destroyed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-prep",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "deployed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "deploy-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "deployed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "formation": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-unit-formation",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "transportKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "formation"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-painted",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "painted"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "wound-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "damage-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-deployment",
+ "type": "string"
+ },
+ "patternId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "patternId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-battlefield",
+ "type": "string"
+ },
+ "patternId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "terrainLayoutId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "patternId",
+ "terrainLayoutId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "use-stratagem",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "use-new-orders",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "secondaryKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "stratagemKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagemKey",
+ "secondaryKey",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "score-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "score-settlement",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "scores": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "category": {
+ "const": "primary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "final": {
+ "properties": {
+ "claims": {
+ "items": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "claims",
+ "delta"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "const": "secondary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "const": "achieved",
+ "type": "string"
+ }
+ },
+ "required": [
+ "category",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 31,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "scores"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-secondary-status",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "achieved",
+ "discarded",
+ "returned"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondaries",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "minItems": 1,
+ "type": "array"
+ },
+ "selected": {
+ "const": true,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-draw",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-scoring",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "select-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reveal-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "begin-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "adjust-cp",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "gainCp": {
+ "type": "boolean"
+ },
+ "keys": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "resolve-tactical-hand",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "score",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "correct-player",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "resource": {
+ "enum": [
+ "cp",
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "playerId",
+ "resource",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "settle-opponent-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "request-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "cancel-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "pause-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "resume-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "concededBy": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "end-battle",
+ "type": "string"
+ },
+ "reason": {
+ "enum": [
+ "completed",
+ "finished-early",
+ "conceded"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reopen-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "undo",
+ "type": "string"
+ },
+ "target": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "target"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "attach-saved-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "rosterId"
+ ],
+ "type": "object"
+ }
+]Input schema / properties / command / anyOfPrevious value: -[
- {
- "oneOf": [
- {
- "properties": {
- "cardKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "select-mission",
- "type": "string"
- },
- "occurrence": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "oneOf": [
- {
- "properties": {
- "fallback": {
- "type": "boolean"
- },
- "kind": {
- "const": "punishment",
- "type": "string"
- },
- "qualified": {
- "type": "boolean"
- },
- "unavailable": {
- "const": true,
- "type": "boolean"
- },
- "units": {
- "items": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "units",
- "fallback",
- "qualified"
- ],
- "type": "object"
- },
- {
- "properties": {
- "guards": {
- "items": {
- "properties": {
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "unit": {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- }
- },
- "required": [
- "objective",
- "unit"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "kind": {
- "const": "guards",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "guards"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "tempting-target",
- "type": "string"
- },
- "noMansLand": {
- "type": "boolean"
- },
- "notHome": {
- "type": "boolean"
- },
- "objective": {
- "properties": {
- "key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "objective",
- "notHome",
- "noMansLand"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "beacon",
- "type": "string"
- },
- "note": {
- "maxLength": 200,
- "type": "string"
- },
- "unit": {
- "anyOf": [
- {
- "properties": {
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterSeq": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "playerId",
- "unitKey",
- "rosterSeq"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "unit",
- "note"
- ],
- "type": "object"
- }
- ]
- }
- },
- "required": [
- "kind",
- "cardKey",
- "occurrence",
- "selection"
- ],
- "type": "object"
- },
- {
- "properties": {
- "clockLimitMinutes": {
- "anyOf": [
- {
- "maximum": 300,
- "minimum": 5,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "kind": {
- "const": "configure-battle",
- "type": "string"
- },
- "limit": {
- "anyOf": [
- {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "missionPackId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerCount": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "teamBattle": {
- "type": "boolean"
- },
- "terrainLayoutId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "twistId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "limit",
- "missionPackId",
- "terrainLayoutId",
- "twistId",
- "clockLimitMinutes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reset-setup",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "detach-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "eventToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "lock-league-rosters",
- "type": "string"
- },
- "leagueToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "leagueToken"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-setup-step",
- "type": "string"
- },
- "step": {
- "maximum": 9,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "step"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-attacker",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "attackerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-first-turn",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-side-disposition",
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "side",
- "disposition"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "attach-roster",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "prep": {
- "anyOf": [
- {
- "properties": {
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "roster": {
- "properties": {
- "built": {
- "properties": {
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "detachment": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachmentIds": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "detachmentPointBudget": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachments": {
- "items": {
- "properties": {
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "points": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "points"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- },
- "disposition": {
- "anyOf": [
- {
- "maxLength": 64,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "edition": {
- "properties": {
- "description": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "id": {
- "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "slug": {
- "maxLength": 80,
- "minLength": 1,
- "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
- "type": "string"
- },
- "status": {
- "enum": [
- "preview",
- "released",
- "retired"
- ],
- "type": "string"
- }
- },
- "required": [
- "id",
- "name",
- "status"
- ],
- "type": "object"
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "picks": {
- "items": {
- "properties": {
- "attachedTo": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "choices": {
- "additionalProperties": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 60,
- "minimum": 1,
- "type": "integer"
- },
- "spreads": {
- "additionalProperties": {
- "additionalProperties": {
- "maximum": 60,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 64,
- "type": "string"
- },
- "type": "object"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "toggles": {
- "additionalProperties": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "entryId"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "revision": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "strategicReserveLimit": {
- "maximum": 5000,
- "minimum": 0,
- "type": "integer"
- },
- "units": {
- "items": {
- "properties": {
- "attachedTo": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "enhancements": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "formationOptions": {
- "items": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "maxItems": 4,
- "type": "array"
- },
- "group": {
- "enum": [
- "epic-hero",
- "character",
- "battleline",
- "infantry",
- "swarm",
- "mounted",
- "beast",
- "monster",
- "vehicle",
- "drone",
- "transport",
- "fortification",
- "other"
- ],
- "type": "string"
- },
- "joined": {
- "items": {
- "properties": {
- "label": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "label",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "points": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "prebattleRules": {
- "items": {
- "enum": [
- "infiltrators",
- "scouts"
- ],
- "type": "string"
- },
- "maxItems": 2,
- "type": "array"
- },
- "strategicReserveExempt": {
- "type": "boolean"
- },
- "transport": {
- "type": "boolean"
- },
- "transportRule": {
- "maxLength": 4000,
- "type": "string"
- },
- "upgrades": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "wargear": {
- "items": {
- "properties": {
- "count": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "count"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "warlord": {
- "type": "boolean"
- },
- "warlordEligible": {
- "type": "boolean"
- },
- "wounds": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "key",
- "name",
- "points",
- "models"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "waivedRules": {
- "items": {
- "enum": [
- "points-limit",
- "detachments",
- "detachment-points",
- "kotc-infantry",
- "kotc-warlord",
- "kotc-epic-heroes",
- "kotc-toughness",
- "kotc-datasheet-copies"
- ],
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- }
- },
- "required": [
- "catalogueId",
- "revision",
- "limit",
- "detachment",
- "disposition",
- "units"
- ],
- "type": "object"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "reminders": {
- "items": {
- "properties": {
- "ability": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "description": {
- "maxLength": 10000,
- "type": "string"
- },
- "key": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "timings": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "phase-start",
- "phase-end"
- ],
- "type": "string"
- },
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "any"
- ],
- "type": "string"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "turn-start",
- "turn-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "round-start",
- "round-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "const": "either",
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "unit": {
- "properties": {
- "index": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "index",
- "name"
- ],
- "type": "object"
- },
- "whileDestroyed": {
- "type": "boolean"
- }
- },
- "required": [
- "key",
- "ability",
- "description",
- "timings"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "remindersEnabled": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 20000,
- "type": "string"
- }
- },
- "required": [
- "name",
- "text"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "roster"
- ],
- "type": "object"
- },
- {
- "properties": {
- "destroyed": {
- "type": "boolean"
- },
- "kind": {
- "const": "set-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "destroyed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-prep",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "properties": {
- "deployed": {
- "type": "boolean"
- },
- "kind": {
- "const": "deploy-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "deployed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "formation": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "kind": {
- "const": "set-unit-formation",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "transportKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "formation"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-painted",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "painted"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "wound-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "damage-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-deployment",
- "type": "string"
- },
- "patternId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "patternId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-battlefield",
- "type": "string"
- },
- "patternId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "terrainLayoutId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "patternId",
- "terrainLayoutId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "use-stratagem",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "kind": {
- "const": "use-new-orders",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "secondaryKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "stratagemKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "stratagemKey",
- "secondaryKey",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "score-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "score-settlement",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "scores": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "category": {
- "const": "primary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "final": {
- "properties": {
- "claims": {
- "items": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "maxItems": 20,
- "type": "array"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "claims",
- "delta"
- ],
- "type": "object"
- }
- },
- "required": [
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "const": "secondary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "const": "achieved",
- "type": "string"
- }
- },
- "required": [
- "category",
- "key",
- "delta"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 31,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "scores"
- ],
- "type": "object"
- },
- {
- "properties": {
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-secondary-status",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "active",
- "achieved",
- "discarded",
- "returned"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "status"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondaries",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "minItems": 1,
- "type": "array"
- },
- "selected": {
- "const": true,
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "secondaries"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-draw",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-scoring",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "select-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "selection": {
- "enum": [
- "punishment",
- "guards",
- "tempting-target",
- "beacon"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reveal-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "begin-battle",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "adjust-cp",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "gainCp": {
- "type": "boolean"
- },
- "keys": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "kind": {
- "const": "resolve-tactical-hand",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "enum": [
- "primary",
- "secondary"
- ],
- "type": "string"
- },
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "score",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "correct-player",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "resource": {
- "enum": [
- "cp",
- "primary",
- "secondary"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "playerId",
- "resource",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "settle-opponent-turn",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "request-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "cancel-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "pause-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "resume-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "concededBy": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "end-battle",
- "type": "string"
- },
- "reason": {
- "enum": [
- "completed",
- "finished-early",
- "conceded"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reopen-battle",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "undo",
- "type": "string"
- },
- "target": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- }
- ]
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "attach-saved-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "rosterId"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "properties": {
+ "cardKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "select-mission",
+ "type": "string"
+ },
+ "occurrence": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "oneOf": [
+ {
+ "properties": {
+ "fallback": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "punishment",
+ "type": "string"
+ },
+ "qualified": {
+ "type": "boolean"
+ },
+ "unavailable": {
+ "const": true,
+ "type": "boolean"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "units",
+ "fallback",
+ "qualified"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "guards": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "guards",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "guards"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "tempting-target",
+ "type": "string"
+ },
+ "noMansLand": {
+ "type": "boolean"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "objective",
+ "notHome",
+ "noMansLand"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "beacon",
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "unit": {
+ "anyOf": [
+ {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "unit",
+ "note"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "allEligible": {
+ "type": "boolean"
+ },
+ "areas": {
+ "items": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 5,
+ "type": "array"
+ },
+ "kind": {
+ "const": "locate-and-deny",
+ "type": "string"
+ },
+ "outsideZone": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "areas",
+ "outsideZone",
+ "allEligible"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "controlled": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "sensor-sweep",
+ "type": "string"
+ },
+ "marker": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "playerId"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "marker",
+ "controlled"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "consecrations": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "consecrate",
+ "type": "string"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "qualified": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "consecrations",
+ "qualified",
+ "notHome"
+ ],
+ "type": "object"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "cardKey",
+ "occurrence",
+ "selection"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "clockLimitMinutes": {
+ "anyOf": [
+ {
+ "maximum": 300,
+ "minimum": 5,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "kind": {
+ "const": "configure-battle",
+ "type": "string"
+ },
+ "limit": {
+ "anyOf": [
+ {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "missionPackId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerCount": {
+ "anyOf": [
+ {
+ "const": 2,
+ "type": "number"
+ },
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "teamBattle": {
+ "type": "boolean"
+ },
+ "terrainLayoutId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "twistId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "limit",
+ "missionPackId",
+ "terrainLayoutId",
+ "twistId",
+ "clockLimitMinutes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reset-setup",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "detach-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "eventToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "lock-league-rosters",
+ "type": "string"
+ },
+ "leagueToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "leagueToken"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-setup-step",
+ "type": "string"
+ },
+ "step": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "step"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-attacker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "attackerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-first-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-side-disposition",
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "attach-roster",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roster": {
+ "properties": {
+ "built": {
+ "properties": {
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachment": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "detachmentPointBudget": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachments": {
+ "items": {
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "points": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "points"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "edition": {
+ "properties": {
+ "description": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "id": {
+ "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "slug": {
+ "maxLength": 80,
+ "minLength": 1,
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "preview",
+ "released",
+ "retired"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "status"
+ ],
+ "type": "object"
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "revision": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategicReserveLimit": {
+ "maximum": 5000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "enhancements": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "formationOptions": {
+ "items": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "group": {
+ "enum": [
+ "epic-hero",
+ "character",
+ "battleline",
+ "infantry",
+ "swarm",
+ "mounted",
+ "beast",
+ "monster",
+ "vehicle",
+ "drone",
+ "transport",
+ "fortification",
+ "other"
+ ],
+ "type": "string"
+ },
+ "joined": {
+ "items": {
+ "properties": {
+ "label": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "points": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prebattleRules": {
+ "items": {
+ "enum": [
+ "infiltrators",
+ "scouts"
+ ],
+ "type": "string"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "strategicReserveExempt": {
+ "type": "boolean"
+ },
+ "transport": {
+ "type": "boolean"
+ },
+ "transportRule": {
+ "maxLength": 4000,
+ "type": "string"
+ },
+ "upgrades": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "wargear": {
+ "items": {
+ "properties": {
+ "count": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "count"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "warlord": {
+ "type": "boolean"
+ },
+ "warlordEligible": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "points",
+ "models"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "catalogueId",
+ "revision",
+ "limit",
+ "detachment",
+ "disposition",
+ "units"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "reminders": {
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "any"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "round-start",
+ "round-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "const": "either",
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ },
+ "whileDestroyed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 20000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "text"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "roster"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "destroyed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "set-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "destroyed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-prep",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "deployed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "deploy-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "deployed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "formation": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-unit-formation",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "transportKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "formation"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-painted",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "painted"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "wound-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "damage-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-deployment",
+ "type": "string"
+ },
+ "patternId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "patternId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-battlefield",
+ "type": "string"
+ },
+ "patternId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "terrainLayoutId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "patternId",
+ "terrainLayoutId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "use-stratagem",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "use-new-orders",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "secondaryKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "stratagemKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagemKey",
+ "secondaryKey",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "score-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "score-settlement",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "scores": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "category": {
+ "const": "primary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "final": {
+ "properties": {
+ "claims": {
+ "items": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "claims",
+ "delta"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "const": "secondary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "const": "achieved",
+ "type": "string"
+ }
+ },
+ "required": [
+ "category",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 31,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "scores"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-secondary-status",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "achieved",
+ "discarded",
+ "returned"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondaries",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "minItems": 1,
+ "type": "array"
+ },
+ "selected": {
+ "const": true,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-draw",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-scoring",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "select-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon",
+ "locate-and-deny",
+ "sensor-sweep",
+ "consecrate"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reveal-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "begin-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "adjust-cp",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "gainCp": {
+ "type": "boolean"
+ },
+ "keys": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "resolve-tactical-hand",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "score",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "correct-player",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "resource": {
+ "enum": [
+ "cp",
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "playerId",
+ "resource",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "settle-opponent-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "request-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "cancel-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "pause-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "resume-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "concededBy": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "end-battle",
+ "type": "string"
+ },
+ "reason": {
+ "enum": [
+ "completed",
+ "finished-early",
+ "conceded"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reopen-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "undo",
+ "type": "string"
+ },
+ "target": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "target"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "attach-saved-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "rosterId"
+ ],
+ "type": "object"
+ }
+]Input schema / properties / command / anyOfPrevious value: -[
- {
- "oneOf": [
- {
- "properties": {
- "clockLimitMinutes": {
- "anyOf": [
- {
- "maximum": 300,
- "minimum": 5,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "kind": {
- "const": "configure-battle",
- "type": "string"
- },
- "limit": {
- "anyOf": [
- {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "missionPackId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerCount": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "teamBattle": {
- "type": "boolean"
- },
- "terrainLayoutId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "twistId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "limit",
- "missionPackId",
- "terrainLayoutId",
- "twistId",
- "clockLimitMinutes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reset-setup",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "detach-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "eventToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "lock-league-rosters",
- "type": "string"
- },
- "leagueToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "leagueToken"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-setup-step",
- "type": "string"
- },
- "step": {
- "maximum": 9,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "step"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-attacker",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "attackerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-first-turn",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-side-disposition",
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "side",
- "disposition"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "attach-roster",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "prep": {
- "anyOf": [
- {
- "properties": {
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "roster": {
- "properties": {
- "built": {
- "properties": {
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "detachment": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachmentIds": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "detachmentPointBudget": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachments": {
- "items": {
- "properties": {
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "points": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "points"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- },
- "disposition": {
- "anyOf": [
- {
- "maxLength": 64,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "edition": {
- "properties": {
- "description": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "id": {
- "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "slug": {
- "maxLength": 80,
- "minLength": 1,
- "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
- "type": "string"
- },
- "status": {
- "enum": [
- "preview",
- "released",
- "retired"
- ],
- "type": "string"
- }
- },
- "required": [
- "id",
- "name",
- "status"
- ],
- "type": "object"
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "picks": {
- "items": {
- "properties": {
- "attachedTo": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "choices": {
- "additionalProperties": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 60,
- "minimum": 1,
- "type": "integer"
- },
- "spreads": {
- "additionalProperties": {
- "additionalProperties": {
- "maximum": 60,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 64,
- "type": "string"
- },
- "type": "object"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "toggles": {
- "additionalProperties": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "entryId"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "revision": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "strategicReserveLimit": {
- "maximum": 5000,
- "minimum": 0,
- "type": "integer"
- },
- "units": {
- "items": {
- "properties": {
- "attachedTo": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "enhancements": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "formationOptions": {
- "items": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "maxItems": 4,
- "type": "array"
- },
- "group": {
- "enum": [
- "epic-hero",
- "character",
- "battleline",
- "infantry",
- "swarm",
- "mounted",
- "beast",
- "monster",
- "vehicle",
- "drone",
- "transport",
- "fortification",
- "other"
- ],
- "type": "string"
- },
- "joined": {
- "items": {
- "properties": {
- "label": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "label",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "points": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "prebattleRules": {
- "items": {
- "enum": [
- "infiltrators",
- "scouts"
- ],
- "type": "string"
- },
- "maxItems": 2,
- "type": "array"
- },
- "strategicReserveExempt": {
- "type": "boolean"
- },
- "transport": {
- "type": "boolean"
- },
- "transportRule": {
- "maxLength": 4000,
- "type": "string"
- },
- "upgrades": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "wargear": {
- "items": {
- "properties": {
- "count": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "count"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "warlord": {
- "type": "boolean"
- },
- "warlordEligible": {
- "type": "boolean"
- },
- "wounds": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "key",
- "name",
- "points",
- "models"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "waivedRules": {
- "items": {
- "enum": [
- "points-limit",
- "detachments",
- "detachment-points",
- "kotc-infantry",
- "kotc-warlord",
- "kotc-epic-heroes",
- "kotc-toughness",
- "kotc-datasheet-copies"
- ],
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- }
- },
- "required": [
- "catalogueId",
- "revision",
- "limit",
- "detachment",
- "disposition",
- "units"
- ],
- "type": "object"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "reminders": {
- "items": {
- "properties": {
- "ability": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "description": {
- "maxLength": 10000,
- "type": "string"
- },
- "key": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "timings": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "phase-start",
- "phase-end"
- ],
- "type": "string"
- },
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "any"
- ],
- "type": "string"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "turn-start",
- "turn-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "round-start",
- "round-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "const": "either",
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "unit": {
- "properties": {
- "index": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "index",
- "name"
- ],
- "type": "object"
- },
- "whileDestroyed": {
- "type": "boolean"
- }
- },
- "required": [
- "key",
- "ability",
- "description",
- "timings"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "remindersEnabled": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 20000,
- "type": "string"
- }
- },
- "required": [
- "name",
- "text"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "roster"
- ],
- "type": "object"
- },
- {
- "properties": {
- "destroyed": {
- "type": "boolean"
- },
- "kind": {
- "const": "set-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "destroyed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-prep",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "properties": {
- "deployed": {
- "type": "boolean"
- },
- "kind": {
- "const": "deploy-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "deployed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "formation": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "kind": {
- "const": "set-unit-formation",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "transportKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "formation"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-painted",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "painted"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "wound-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "damage-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-deployment",
- "type": "string"
- },
- "patternId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "patternId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-battlefield",
- "type": "string"
- },
- "patternId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "terrainLayoutId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "patternId",
- "terrainLayoutId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "use-stratagem",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "kind": {
- "const": "use-new-orders",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "secondaryKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "stratagemKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "stratagemKey",
- "secondaryKey",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "score-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "score-settlement",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "scores": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "category": {
- "const": "primary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "final": {
- "properties": {
- "claims": {
- "items": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "maxItems": 20,
- "type": "array"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "claims",
- "delta"
- ],
- "type": "object"
- }
- },
- "required": [
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "const": "secondary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "const": "achieved",
- "type": "string"
- }
- },
- "required": [
- "category",
- "key",
- "delta"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 31,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "scores"
- ],
- "type": "object"
- },
- {
- "properties": {
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-secondary-status",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "active",
- "achieved",
- "discarded",
- "returned"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "status"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondaries",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "minItems": 1,
- "type": "array"
- },
- "selected": {
- "const": true,
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "secondaries"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-draw",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-scoring",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "select-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reveal-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "begin-battle",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "adjust-cp",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "gainCp": {
- "type": "boolean"
- },
- "keys": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "kind": {
- "const": "resolve-tactical-hand",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "enum": [
- "primary",
- "secondary"
- ],
- "type": "string"
- },
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "score",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "correct-player",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "resource": {
- "enum": [
- "cp",
- "primary",
- "secondary"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "playerId",
- "resource",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "settle-opponent-turn",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "request-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "cancel-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "pause-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "resume-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "concededBy": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "end-battle",
- "type": "string"
- },
- "reason": {
- "enum": [
- "completed",
- "finished-early",
- "conceded"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reopen-battle",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "undo",
- "type": "string"
- },
- "target": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- }
- ]
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "attach-saved-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "rosterId"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "properties": {
+ "cardKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "select-mission",
+ "type": "string"
+ },
+ "occurrence": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "oneOf": [
+ {
+ "properties": {
+ "fallback": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "punishment",
+ "type": "string"
+ },
+ "qualified": {
+ "type": "boolean"
+ },
+ "unavailable": {
+ "const": true,
+ "type": "boolean"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "units",
+ "fallback",
+ "qualified"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "guards": {
+ "items": {
+ "properties": {
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "unit": {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "objective",
+ "unit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "kind": {
+ "const": "guards",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "guards"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "tempting-target",
+ "type": "string"
+ },
+ "noMansLand": {
+ "type": "boolean"
+ },
+ "notHome": {
+ "type": "boolean"
+ },
+ "objective": {
+ "properties": {
+ "key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "objective",
+ "notHome",
+ "noMansLand"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "beacon",
+ "type": "string"
+ },
+ "note": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "unit": {
+ "anyOf": [
+ {
+ "properties": {
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterSeq": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "playerId",
+ "unitKey",
+ "rosterSeq"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "unit",
+ "note"
+ ],
+ "type": "object"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "cardKey",
+ "occurrence",
+ "selection"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "clockLimitMinutes": {
+ "anyOf": [
+ {
+ "maximum": 300,
+ "minimum": 5,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "kind": {
+ "const": "configure-battle",
+ "type": "string"
+ },
+ "limit": {
+ "anyOf": [
+ {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "missionPackId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerCount": {
+ "anyOf": [
+ {
+ "const": 2,
+ "type": "number"
+ },
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "teamBattle": {
+ "type": "boolean"
+ },
+ "terrainLayoutId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "twistId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "limit",
+ "missionPackId",
+ "terrainLayoutId",
+ "twistId",
+ "clockLimitMinutes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reset-setup",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "detach-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "eventToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "lock-league-rosters",
+ "type": "string"
+ },
+ "leagueToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "leagueToken"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-setup-step",
+ "type": "string"
+ },
+ "step": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "step"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-attacker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "attackerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-first-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-side-disposition",
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "attach-roster",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roster": {
+ "properties": {
+ "built": {
+ "properties": {
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachment": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "detachmentPointBudget": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachments": {
+ "items": {
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "points": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "points"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "edition": {
+ "properties": {
+ "description": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "id": {
+ "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "slug": {
+ "maxLength": 80,
+ "minLength": 1,
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "preview",
+ "released",
+ "retired"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "status"
+ ],
+ "type": "object"
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "revision": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategicReserveLimit": {
+ "maximum": 5000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "enhancements": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "formationOptions": {
+ "items": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "group": {
+ "enum": [
+ "epic-hero",
+ "character",
+ "battleline",
+ "infantry",
+ "swarm",
+ "mounted",
+ "beast",
+ "monster",
+ "vehicle",
+ "drone",
+ "transport",
+ "fortification",
+ "other"
+ ],
+ "type": "string"
+ },
+ "joined": {
+ "items": {
+ "properties": {
+ "label": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "points": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prebattleRules": {
+ "items": {
+ "enum": [
+ "infiltrators",
+ "scouts"
+ ],
+ "type": "string"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "strategicReserveExempt": {
+ "type": "boolean"
+ },
+ "transport": {
+ "type": "boolean"
+ },
+ "transportRule": {
+ "maxLength": 4000,
+ "type": "string"
+ },
+ "upgrades": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "wargear": {
+ "items": {
+ "properties": {
+ "count": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "count"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "warlord": {
+ "type": "boolean"
+ },
+ "warlordEligible": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "points",
+ "models"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "catalogueId",
+ "revision",
+ "limit",
+ "detachment",
+ "disposition",
+ "units"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "reminders": {
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "any"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "round-start",
+ "round-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "const": "either",
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ },
+ "whileDestroyed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 20000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "text"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "roster"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "destroyed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "set-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "destroyed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-prep",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "deployed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "deploy-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "deployed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "formation": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-unit-formation",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "transportKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "formation"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-painted",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "painted"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "wound-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "damage-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-deployment",
+ "type": "string"
+ },
+ "patternId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "patternId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-battlefield",
+ "type": "string"
+ },
+ "patternId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "terrainLayoutId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "patternId",
+ "terrainLayoutId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "use-stratagem",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "use-new-orders",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "secondaryKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "stratagemKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagemKey",
+ "secondaryKey",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "score-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "score-settlement",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "scores": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "category": {
+ "const": "primary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "final": {
+ "properties": {
+ "claims": {
+ "items": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "claims",
+ "delta"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "const": "secondary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "const": "achieved",
+ "type": "string"
+ }
+ },
+ "required": [
+ "category",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 31,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "scores"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-secondary-status",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "achieved",
+ "discarded",
+ "returned"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondaries",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "minItems": 1,
+ "type": "array"
+ },
+ "selected": {
+ "const": true,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-draw",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-scoring",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "select-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "selection": {
+ "enum": [
+ "punishment",
+ "guards",
+ "tempting-target",
+ "beacon"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reveal-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "begin-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "adjust-cp",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "gainCp": {
+ "type": "boolean"
+ },
+ "keys": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "resolve-tactical-hand",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "score",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "correct-player",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "resource": {
+ "enum": [
+ "cp",
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "playerId",
+ "resource",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "settle-opponent-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "request-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "cancel-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "pause-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "resume-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "concededBy": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "end-battle",
+ "type": "string"
+ },
+ "reason": {
+ "enum": [
+ "completed",
+ "finished-early",
+ "conceded"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reopen-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "undo",
+ "type": "string"
+ },
+ "target": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "target"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "attach-saved-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "rosterId"
+ ],
+ "type": "object"
+ }
+]Input schema / properties / command / anyOfPrevious value: -[
- {
- "oneOf": [
- {
- "properties": {
- "clockLimitMinutes": {
- "anyOf": [
- {
- "maximum": 300,
- "minimum": 5,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "kind": {
- "const": "configure-battle",
- "type": "string"
- },
- "limit": {
- "anyOf": [
- {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "missionPackId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerCount": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "teamBattle": {
- "type": "boolean"
- },
- "terrainLayoutId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "twistId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "limit",
- "missionPackId",
- "terrainLayoutId",
- "twistId",
- "clockLimitMinutes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reset-setup",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "detach-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "eventToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "lock-league-rosters",
- "type": "string"
- },
- "leagueToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "leagueToken"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-setup-step",
- "type": "string"
- },
- "step": {
- "maximum": 9,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "step"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-attacker",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "attackerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-first-turn",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-side-disposition",
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "side",
- "disposition"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "attach-roster",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "prep": {
- "anyOf": [
- {
- "properties": {
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "roster": {
- "properties": {
- "built": {
- "properties": {
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "detachment": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachmentIds": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "detachmentPointBudget": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachments": {
- "items": {
- "properties": {
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "points": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "points"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- },
- "disposition": {
- "anyOf": [
- {
- "maxLength": 64,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "edition": {
- "properties": {
- "description": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "id": {
- "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "slug": {
- "maxLength": 80,
- "minLength": 1,
- "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
- "type": "string"
- },
- "status": {
- "enum": [
- "preview",
- "released",
- "retired"
- ],
- "type": "string"
- }
- },
- "required": [
- "id",
- "name",
- "status"
- ],
- "type": "object"
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "picks": {
- "items": {
- "properties": {
- "attachedTo": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "choices": {
- "additionalProperties": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 60,
- "minimum": 1,
- "type": "integer"
- },
- "spreads": {
- "additionalProperties": {
- "additionalProperties": {
- "maximum": 60,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 64,
- "type": "string"
- },
- "type": "object"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "toggles": {
- "additionalProperties": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "entryId"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "revision": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "strategicReserveLimit": {
- "maximum": 5000,
- "minimum": 0,
- "type": "integer"
- },
- "units": {
- "items": {
- "properties": {
- "attachedTo": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "enhancements": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "formationOptions": {
- "items": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "maxItems": 4,
- "type": "array"
- },
- "group": {
- "enum": [
- "epic-hero",
- "character",
- "battleline",
- "infantry",
- "swarm",
- "mounted",
- "beast",
- "monster",
- "vehicle",
- "drone",
- "transport",
- "fortification",
- "other"
- ],
- "type": "string"
- },
- "joined": {
- "items": {
- "properties": {
- "label": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "label",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "points": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "prebattleRules": {
- "items": {
- "enum": [
- "infiltrators",
- "scouts"
- ],
- "type": "string"
- },
- "maxItems": 2,
- "type": "array"
- },
- "strategicReserveExempt": {
- "type": "boolean"
- },
- "transport": {
- "type": "boolean"
- },
- "transportRule": {
- "maxLength": 4000,
- "type": "string"
- },
- "upgrades": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "wargear": {
- "items": {
- "properties": {
- "count": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "count"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "warlord": {
- "type": "boolean"
- },
- "warlordEligible": {
- "type": "boolean"
- },
- "wounds": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "key",
- "name",
- "points",
- "models"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "waivedRules": {
- "items": {
- "enum": [
- "points-limit",
- "detachments",
- "detachment-points",
- "kotc-infantry",
- "kotc-warlord",
- "kotc-epic-heroes",
- "kotc-toughness",
- "kotc-datasheet-copies"
- ],
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- }
- },
- "required": [
- "catalogueId",
- "revision",
- "limit",
- "detachment",
- "disposition",
- "units"
- ],
- "type": "object"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "reminders": {
- "items": {
- "properties": {
- "ability": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "description": {
- "maxLength": 10000,
- "type": "string"
- },
- "key": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "timings": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "phase-start",
- "phase-end"
- ],
- "type": "string"
- },
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "any"
- ],
- "type": "string"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "turn-start",
- "turn-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "round-start",
- "round-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "const": "either",
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "unit": {
- "properties": {
- "index": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "index",
- "name"
- ],
- "type": "object"
- },
- "whileDestroyed": {
- "type": "boolean"
- }
- },
- "required": [
- "key",
- "ability",
- "description",
- "timings"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "remindersEnabled": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 20000,
- "type": "string"
- }
- },
- "required": [
- "name",
- "text"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "roster"
- ],
- "type": "object"
- },
- {
- "properties": {
- "destroyed": {
- "type": "boolean"
- },
- "kind": {
- "const": "set-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "destroyed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-prep",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "properties": {
- "deployed": {
- "type": "boolean"
- },
- "kind": {
- "const": "deploy-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "deployed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "formation": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "kind": {
- "const": "set-unit-formation",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "transportKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "formation"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-painted",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "painted"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "wound-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "damage-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-deployment",
- "type": "string"
- },
- "patternId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "patternId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-battlefield",
- "type": "string"
- },
- "patternId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "terrainLayoutId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "patternId",
- "terrainLayoutId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "use-stratagem",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "kind": {
- "const": "use-new-orders",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "secondaryKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "stratagemKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "stratagemKey",
- "secondaryKey",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "score-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "score-settlement",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "scores": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "category": {
- "const": "primary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "const": "secondary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "const": "achieved",
- "type": "string"
- }
- },
- "required": [
- "category",
- "key",
- "delta"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 31,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "scores"
- ],
- "type": "object"
- },
- {
- "properties": {
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-secondary-status",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "active",
- "achieved",
- "discarded",
- "returned"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "status"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondaries",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "minItems": 1,
- "type": "array"
- },
- "selected": {
- "const": true,
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "secondaries"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-draw",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-scoring",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "select-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reveal-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "begin-battle",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "adjust-cp",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "gainCp": {
- "type": "boolean"
- },
- "keys": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "kind": {
- "const": "resolve-tactical-hand",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "enum": [
- "primary",
- "secondary"
- ],
- "type": "string"
- },
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "score",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "correct-player",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "resource": {
- "enum": [
- "cp",
- "primary",
- "secondary"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "playerId",
- "resource",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "settle-opponent-turn",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "request-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "cancel-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "pause-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "resume-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "concededBy": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "end-battle",
- "type": "string"
- },
- "reason": {
- "enum": [
- "completed",
- "finished-early",
- "conceded"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reopen-battle",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "undo",
- "type": "string"
- },
- "target": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- }
- ]
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "attach-saved-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "rosterId"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "properties": {
+ "clockLimitMinutes": {
+ "anyOf": [
+ {
+ "maximum": 300,
+ "minimum": 5,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "kind": {
+ "const": "configure-battle",
+ "type": "string"
+ },
+ "limit": {
+ "anyOf": [
+ {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "missionPackId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerCount": {
+ "anyOf": [
+ {
+ "const": 2,
+ "type": "number"
+ },
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "teamBattle": {
+ "type": "boolean"
+ },
+ "terrainLayoutId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "twistId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "limit",
+ "missionPackId",
+ "terrainLayoutId",
+ "twistId",
+ "clockLimitMinutes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reset-setup",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "detach-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "eventToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "lock-league-rosters",
+ "type": "string"
+ },
+ "leagueToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "leagueToken"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-setup-step",
+ "type": "string"
+ },
+ "step": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "step"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-attacker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "attackerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-first-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-side-disposition",
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "attach-roster",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roster": {
+ "properties": {
+ "built": {
+ "properties": {
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachment": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "detachmentPointBudget": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachments": {
+ "items": {
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "points": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "points"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "edition": {
+ "properties": {
+ "description": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "id": {
+ "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "slug": {
+ "maxLength": 80,
+ "minLength": 1,
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "preview",
+ "released",
+ "retired"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "status"
+ ],
+ "type": "object"
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "revision": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategicReserveLimit": {
+ "maximum": 5000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "enhancements": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "formationOptions": {
+ "items": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "group": {
+ "enum": [
+ "epic-hero",
+ "character",
+ "battleline",
+ "infantry",
+ "swarm",
+ "mounted",
+ "beast",
+ "monster",
+ "vehicle",
+ "drone",
+ "transport",
+ "fortification",
+ "other"
+ ],
+ "type": "string"
+ },
+ "joined": {
+ "items": {
+ "properties": {
+ "label": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "points": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prebattleRules": {
+ "items": {
+ "enum": [
+ "infiltrators",
+ "scouts"
+ ],
+ "type": "string"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "strategicReserveExempt": {
+ "type": "boolean"
+ },
+ "transport": {
+ "type": "boolean"
+ },
+ "transportRule": {
+ "maxLength": 4000,
+ "type": "string"
+ },
+ "upgrades": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "wargear": {
+ "items": {
+ "properties": {
+ "count": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "count"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "warlord": {
+ "type": "boolean"
+ },
+ "warlordEligible": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "points",
+ "models"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "catalogueId",
+ "revision",
+ "limit",
+ "detachment",
+ "disposition",
+ "units"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "reminders": {
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "any"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "round-start",
+ "round-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "const": "either",
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ },
+ "whileDestroyed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 20000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "text"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "roster"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "destroyed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "set-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "destroyed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-prep",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "deployed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "deploy-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "deployed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "formation": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-unit-formation",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "transportKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "formation"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-painted",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "painted"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "wound-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "damage-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-deployment",
+ "type": "string"
+ },
+ "patternId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "patternId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-battlefield",
+ "type": "string"
+ },
+ "patternId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "terrainLayoutId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "patternId",
+ "terrainLayoutId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "use-stratagem",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "use-new-orders",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "secondaryKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "stratagemKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagemKey",
+ "secondaryKey",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "score-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "score-settlement",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "scores": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "category": {
+ "const": "primary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "final": {
+ "properties": {
+ "claims": {
+ "items": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "claims",
+ "delta"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "const": "secondary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "const": "achieved",
+ "type": "string"
+ }
+ },
+ "required": [
+ "category",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 31,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "scores"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-secondary-status",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "achieved",
+ "discarded",
+ "returned"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondaries",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "minItems": 1,
+ "type": "array"
+ },
+ "selected": {
+ "const": true,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-draw",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-scoring",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "select-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reveal-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "begin-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "adjust-cp",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "gainCp": {
+ "type": "boolean"
+ },
+ "keys": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "resolve-tactical-hand",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "score",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "correct-player",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "resource": {
+ "enum": [
+ "cp",
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "playerId",
+ "resource",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "settle-opponent-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "request-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "cancel-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "pause-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "resume-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "concededBy": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "end-battle",
+ "type": "string"
+ },
+ "reason": {
+ "enum": [
+ "completed",
+ "finished-early",
+ "conceded"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reopen-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "undo",
+ "type": "string"
+ },
+ "target": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "target"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "attach-saved-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "rosterId"
+ ],
+ "type": "object"
+ }
+]Input schema / properties / command / anyOfPrevious value: -[
- {
- "oneOf": [
- {
- "properties": {
- "clockLimitMinutes": {
- "anyOf": [
- {
- "maximum": 300,
- "minimum": 5,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "kind": {
- "const": "configure-battle",
- "type": "string"
- },
- "limit": {
- "anyOf": [
- {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "missionPackId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerCount": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "teamBattle": {
- "type": "boolean"
- },
- "terrainLayoutId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "twistId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "limit",
- "missionPackId",
- "terrainLayoutId",
- "twistId",
- "clockLimitMinutes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reset-setup",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "detach-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "eventToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "lock-league-rosters",
- "type": "string"
- },
- "leagueToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "leagueToken"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-setup-step",
- "type": "string"
- },
- "step": {
- "maximum": 9,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "step"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-attacker",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "attackerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-first-turn",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-side-disposition",
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "side",
- "disposition"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "attach-roster",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "prep": {
- "anyOf": [
- {
- "properties": {
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "roster": {
- "properties": {
- "built": {
- "properties": {
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "detachment": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachmentIds": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "detachmentPointBudget": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachments": {
- "items": {
- "properties": {
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "points": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "points"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- },
- "disposition": {
- "anyOf": [
- {
- "maxLength": 64,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "edition": {
- "properties": {
- "id": {
- "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "preview",
- "released",
- "retired"
- ],
- "type": "string"
- }
- },
- "required": [
- "id",
- "name",
- "status"
- ],
- "type": "object"
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "picks": {
- "items": {
- "properties": {
- "attachedTo": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "choices": {
- "additionalProperties": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 60,
- "minimum": 1,
- "type": "integer"
- },
- "spreads": {
- "additionalProperties": {
- "additionalProperties": {
- "maximum": 60,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 64,
- "type": "string"
- },
- "type": "object"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "toggles": {
- "additionalProperties": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "entryId"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "revision": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "strategicReserveLimit": {
- "maximum": 5000,
- "minimum": 0,
- "type": "integer"
- },
- "units": {
- "items": {
- "properties": {
- "attachedTo": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "enhancements": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "formationOptions": {
- "items": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "maxItems": 4,
- "type": "array"
- },
- "group": {
- "enum": [
- "epic-hero",
- "character",
- "battleline",
- "infantry",
- "swarm",
- "mounted",
- "beast",
- "monster",
- "vehicle",
- "drone",
- "transport",
- "fortification",
- "other"
- ],
- "type": "string"
- },
- "joined": {
- "items": {
- "properties": {
- "label": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "label",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "points": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "prebattleRules": {
- "items": {
- "enum": [
- "infiltrators",
- "scouts"
- ],
- "type": "string"
- },
- "maxItems": 2,
- "type": "array"
- },
- "strategicReserveExempt": {
- "type": "boolean"
- },
- "transport": {
- "type": "boolean"
- },
- "transportRule": {
- "maxLength": 4000,
- "type": "string"
- },
- "upgrades": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "wargear": {
- "items": {
- "properties": {
- "count": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "count"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "warlord": {
- "type": "boolean"
- },
- "warlordEligible": {
- "type": "boolean"
- },
- "wounds": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "key",
- "name",
- "points",
- "models"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "waivedRules": {
- "items": {
- "enum": [
- "points-limit",
- "detachments",
- "detachment-points",
- "kotc-infantry",
- "kotc-warlord",
- "kotc-epic-heroes",
- "kotc-toughness",
- "kotc-datasheet-copies"
- ],
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- }
- },
- "required": [
- "catalogueId",
- "revision",
- "limit",
- "detachment",
- "disposition",
- "units"
- ],
- "type": "object"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "reminders": {
- "items": {
- "properties": {
- "ability": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "description": {
- "maxLength": 10000,
- "type": "string"
- },
- "key": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "timings": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "phase-start",
- "phase-end"
- ],
- "type": "string"
- },
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "any"
- ],
- "type": "string"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "turn-start",
- "turn-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "round-start",
- "round-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "const": "either",
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "unit": {
- "properties": {
- "index": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "index",
- "name"
- ],
- "type": "object"
- },
- "whileDestroyed": {
- "type": "boolean"
- }
- },
- "required": [
- "key",
- "ability",
- "description",
- "timings"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "remindersEnabled": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 20000,
- "type": "string"
- }
- },
- "required": [
- "name",
- "text"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "roster"
- ],
- "type": "object"
- },
- {
- "properties": {
- "destroyed": {
- "type": "boolean"
- },
- "kind": {
- "const": "set-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "destroyed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-prep",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "properties": {
- "deployed": {
- "type": "boolean"
- },
- "kind": {
- "const": "deploy-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "deployed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "formation": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "kind": {
- "const": "set-unit-formation",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "transportKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "formation"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-painted",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "painted"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "wound-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "damage-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-deployment",
- "type": "string"
- },
- "patternId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "patternId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-battlefield",
- "type": "string"
- },
- "patternId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "terrainLayoutId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "patternId",
- "terrainLayoutId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "use-stratagem",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "kind": {
- "const": "use-new-orders",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "secondaryKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "stratagemKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "stratagemKey",
- "secondaryKey",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "score-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "score-settlement",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "scores": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "category": {
- "const": "primary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "const": "secondary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "const": "achieved",
- "type": "string"
- }
- },
- "required": [
- "category",
- "key",
- "delta"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 31,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "scores"
- ],
- "type": "object"
- },
- {
- "properties": {
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-secondary-status",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "active",
- "achieved",
- "discarded",
- "returned"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "status"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondaries",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "minItems": 1,
- "type": "array"
- },
- "selected": {
- "const": true,
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "secondaries"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-draw",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-scoring",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "select-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reveal-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "begin-battle",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "adjust-cp",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "gainCp": {
- "type": "boolean"
- },
- "keys": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "kind": {
- "const": "resolve-tactical-hand",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "enum": [
- "primary",
- "secondary"
- ],
- "type": "string"
- },
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "score",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "correct-player",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "resource": {
- "enum": [
- "cp",
- "primary",
- "secondary"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "playerId",
- "resource",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "settle-opponent-turn",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "request-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "cancel-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "pause-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "resume-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "concededBy": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "end-battle",
- "type": "string"
- },
- "reason": {
- "enum": [
- "completed",
- "finished-early",
- "conceded"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reopen-battle",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "undo",
- "type": "string"
- },
- "target": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- }
- ]
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "attach-saved-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "rosterId"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "properties": {
+ "clockLimitMinutes": {
+ "anyOf": [
+ {
+ "maximum": 300,
+ "minimum": 5,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "kind": {
+ "const": "configure-battle",
+ "type": "string"
+ },
+ "limit": {
+ "anyOf": [
+ {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "missionPackId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerCount": {
+ "anyOf": [
+ {
+ "const": 2,
+ "type": "number"
+ },
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "teamBattle": {
+ "type": "boolean"
+ },
+ "terrainLayoutId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "twistId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "limit",
+ "missionPackId",
+ "terrainLayoutId",
+ "twistId",
+ "clockLimitMinutes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reset-setup",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "detach-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "eventToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "lock-league-rosters",
+ "type": "string"
+ },
+ "leagueToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "leagueToken"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-setup-step",
+ "type": "string"
+ },
+ "step": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "step"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-attacker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "attackerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-first-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-side-disposition",
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "attach-roster",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roster": {
+ "properties": {
+ "built": {
+ "properties": {
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachment": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "detachmentPointBudget": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachments": {
+ "items": {
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "points": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "points"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "edition": {
+ "properties": {
+ "description": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "id": {
+ "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "slug": {
+ "maxLength": 80,
+ "minLength": 1,
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "preview",
+ "released",
+ "retired"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "status"
+ ],
+ "type": "object"
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "revision": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategicReserveLimit": {
+ "maximum": 5000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "enhancements": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "formationOptions": {
+ "items": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "group": {
+ "enum": [
+ "epic-hero",
+ "character",
+ "battleline",
+ "infantry",
+ "swarm",
+ "mounted",
+ "beast",
+ "monster",
+ "vehicle",
+ "drone",
+ "transport",
+ "fortification",
+ "other"
+ ],
+ "type": "string"
+ },
+ "joined": {
+ "items": {
+ "properties": {
+ "label": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "points": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prebattleRules": {
+ "items": {
+ "enum": [
+ "infiltrators",
+ "scouts"
+ ],
+ "type": "string"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "strategicReserveExempt": {
+ "type": "boolean"
+ },
+ "transport": {
+ "type": "boolean"
+ },
+ "transportRule": {
+ "maxLength": 4000,
+ "type": "string"
+ },
+ "upgrades": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "wargear": {
+ "items": {
+ "properties": {
+ "count": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "count"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "warlord": {
+ "type": "boolean"
+ },
+ "warlordEligible": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "points",
+ "models"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "catalogueId",
+ "revision",
+ "limit",
+ "detachment",
+ "disposition",
+ "units"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "reminders": {
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "any"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "round-start",
+ "round-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "const": "either",
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ },
+ "whileDestroyed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 20000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "text"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "roster"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "destroyed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "set-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "destroyed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-prep",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "deployed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "deploy-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "deployed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "formation": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-unit-formation",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "transportKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "formation"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-painted",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "painted"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "wound-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "damage-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-deployment",
+ "type": "string"
+ },
+ "patternId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "patternId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-battlefield",
+ "type": "string"
+ },
+ "patternId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "terrainLayoutId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "patternId",
+ "terrainLayoutId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "use-stratagem",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "use-new-orders",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "secondaryKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "stratagemKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagemKey",
+ "secondaryKey",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "score-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "score-settlement",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "scores": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "category": {
+ "const": "primary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "const": "secondary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "const": "achieved",
+ "type": "string"
+ }
+ },
+ "required": [
+ "category",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 31,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "scores"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-secondary-status",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "achieved",
+ "discarded",
+ "returned"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondaries",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "minItems": 1,
+ "type": "array"
+ },
+ "selected": {
+ "const": true,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-draw",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-scoring",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "select-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reveal-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "begin-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "adjust-cp",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "gainCp": {
+ "type": "boolean"
+ },
+ "keys": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "resolve-tactical-hand",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "score",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "correct-player",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "resource": {
+ "enum": [
+ "cp",
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "playerId",
+ "resource",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "settle-opponent-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "request-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "cancel-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "pause-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "resume-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "concededBy": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "end-battle",
+ "type": "string"
+ },
+ "reason": {
+ "enum": [
+ "completed",
+ "finished-early",
+ "conceded"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reopen-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "undo",
+ "type": "string"
+ },
+ "target": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "target"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "attach-saved-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "rosterId"
+ ],
+ "type": "object"
+ }
+]Input schema / properties / command / anyOfPrevious value: -[
- {
- "oneOf": [
- {
- "properties": {
- "clockLimitMinutes": {
- "anyOf": [
- {
- "maximum": 300,
- "minimum": 5,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "kind": {
- "const": "configure-battle",
- "type": "string"
- },
- "limit": {
- "anyOf": [
- {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "missionPackId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerCount": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "teamBattle": {
- "type": "boolean"
- },
- "terrainLayoutId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "twistId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "limit",
- "missionPackId",
- "terrainLayoutId",
- "twistId",
- "clockLimitMinutes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reset-setup",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "detach-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "eventToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "lock-league-rosters",
- "type": "string"
- },
- "leagueToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "leagueToken"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-setup-step",
- "type": "string"
- },
- "step": {
- "maximum": 9,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "step"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-attacker",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "attackerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-first-turn",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-side-disposition",
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "side",
- "disposition"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "attach-roster",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "prep": {
- "anyOf": [
- {
- "properties": {
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "roster": {
- "properties": {
- "built": {
- "properties": {
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "detachment": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachmentIds": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "detachmentPointBudget": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachments": {
- "items": {
- "properties": {
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "points": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "points"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- },
- "disposition": {
- "anyOf": [
- {
- "maxLength": 64,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "picks": {
- "items": {
- "properties": {
- "attachedTo": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "choices": {
- "additionalProperties": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 60,
- "minimum": 1,
- "type": "integer"
- },
- "spreads": {
- "additionalProperties": {
- "additionalProperties": {
- "maximum": 60,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 64,
- "type": "string"
- },
- "type": "object"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "toggles": {
- "additionalProperties": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "entryId"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "revision": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "strategicReserveLimit": {
- "maximum": 5000,
- "minimum": 0,
- "type": "integer"
- },
- "units": {
- "items": {
- "properties": {
- "attachedTo": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "enhancements": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "formationOptions": {
- "items": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "maxItems": 4,
- "type": "array"
- },
- "group": {
- "enum": [
- "epic-hero",
- "character",
- "battleline",
- "infantry",
- "swarm",
- "mounted",
- "beast",
- "monster",
- "vehicle",
- "drone",
- "transport",
- "fortification",
- "other"
- ],
- "type": "string"
- },
- "joined": {
- "items": {
- "properties": {
- "label": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "label",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "points": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "prebattleRules": {
- "items": {
- "enum": [
- "infiltrators",
- "scouts"
- ],
- "type": "string"
- },
- "maxItems": 2,
- "type": "array"
- },
- "strategicReserveExempt": {
- "type": "boolean"
- },
- "transport": {
- "type": "boolean"
- },
- "transportRule": {
- "maxLength": 4000,
- "type": "string"
- },
- "upgrades": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "wargear": {
- "items": {
- "properties": {
- "count": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "count"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "warlord": {
- "type": "boolean"
- },
- "warlordEligible": {
- "type": "boolean"
- },
- "wounds": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "key",
- "name",
- "points",
- "models"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "waivedRules": {
- "items": {
- "enum": [
- "points-limit",
- "detachments",
- "detachment-points",
- "kotc-infantry",
- "kotc-warlord",
- "kotc-epic-heroes",
- "kotc-toughness",
- "kotc-datasheet-copies"
- ],
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- }
- },
- "required": [
- "catalogueId",
- "revision",
- "limit",
- "detachment",
- "disposition",
- "units"
- ],
- "type": "object"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "reminders": {
- "items": {
- "properties": {
- "ability": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "description": {
- "maxLength": 10000,
- "type": "string"
- },
- "key": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "timings": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "phase-start",
- "phase-end"
- ],
- "type": "string"
- },
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "any"
- ],
- "type": "string"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "turn-start",
- "turn-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "round-start",
- "round-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "const": "either",
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "unit": {
- "properties": {
- "index": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "index",
- "name"
- ],
- "type": "object"
- },
- "whileDestroyed": {
- "type": "boolean"
- }
- },
- "required": [
- "key",
- "ability",
- "description",
- "timings"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "remindersEnabled": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 20000,
- "type": "string"
- }
- },
- "required": [
- "name",
- "text"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "roster"
- ],
- "type": "object"
- },
- {
- "properties": {
- "destroyed": {
- "type": "boolean"
- },
- "kind": {
- "const": "set-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "destroyed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-prep",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "properties": {
- "deployed": {
- "type": "boolean"
- },
- "kind": {
- "const": "deploy-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "deployed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "formation": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "kind": {
- "const": "set-unit-formation",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "transportKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "formation"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-painted",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "painted"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "wound-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "damage-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-deployment",
- "type": "string"
- },
- "patternId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "patternId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-battlefield",
- "type": "string"
- },
- "patternId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "terrainLayoutId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "patternId",
- "terrainLayoutId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "use-stratagem",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "kind": {
- "const": "use-new-orders",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "secondaryKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "stratagemKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "stratagemKey",
- "secondaryKey",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "score-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "score-settlement",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "scores": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "category": {
- "const": "primary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "const": "secondary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "const": "achieved",
- "type": "string"
- }
- },
- "required": [
- "category",
- "key",
- "delta"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 31,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "scores"
- ],
- "type": "object"
- },
- {
- "properties": {
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-secondary-status",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "active",
- "achieved",
- "discarded",
- "returned"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "status"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondaries",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "minItems": 1,
- "type": "array"
- },
- "selected": {
- "const": true,
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "secondaries"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-draw",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-scoring",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "select-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reveal-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "begin-battle",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "adjust-cp",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "gainCp": {
- "type": "boolean"
- },
- "keys": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "kind": {
- "const": "resolve-tactical-hand",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "enum": [
- "primary",
- "secondary"
- ],
- "type": "string"
- },
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "score",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "correct-player",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "resource": {
- "enum": [
- "cp",
- "primary",
- "secondary"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "playerId",
- "resource",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "settle-opponent-turn",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "request-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "cancel-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "pause-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "resume-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "concededBy": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "end-battle",
- "type": "string"
- },
- "reason": {
- "enum": [
- "completed",
- "finished-early",
- "conceded"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reopen-battle",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "undo",
- "type": "string"
- },
- "target": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- }
- ]
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "attach-saved-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "rosterId"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "properties": {
+ "clockLimitMinutes": {
+ "anyOf": [
+ {
+ "maximum": 300,
+ "minimum": 5,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "kind": {
+ "const": "configure-battle",
+ "type": "string"
+ },
+ "limit": {
+ "anyOf": [
+ {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "missionPackId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerCount": {
+ "anyOf": [
+ {
+ "const": 2,
+ "type": "number"
+ },
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "teamBattle": {
+ "type": "boolean"
+ },
+ "terrainLayoutId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "twistId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "limit",
+ "missionPackId",
+ "terrainLayoutId",
+ "twistId",
+ "clockLimitMinutes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reset-setup",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "detach-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "eventToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "lock-league-rosters",
+ "type": "string"
+ },
+ "leagueToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "leagueToken"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-setup-step",
+ "type": "string"
+ },
+ "step": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "step"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-attacker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "attackerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-first-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-side-disposition",
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "attach-roster",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roster": {
+ "properties": {
+ "built": {
+ "properties": {
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachment": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "detachmentPointBudget": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachments": {
+ "items": {
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "points": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "points"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "edition": {
+ "properties": {
+ "id": {
+ "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "preview",
+ "released",
+ "retired"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "status"
+ ],
+ "type": "object"
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "revision": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategicReserveLimit": {
+ "maximum": 5000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "enhancements": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "formationOptions": {
+ "items": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "group": {
+ "enum": [
+ "epic-hero",
+ "character",
+ "battleline",
+ "infantry",
+ "swarm",
+ "mounted",
+ "beast",
+ "monster",
+ "vehicle",
+ "drone",
+ "transport",
+ "fortification",
+ "other"
+ ],
+ "type": "string"
+ },
+ "joined": {
+ "items": {
+ "properties": {
+ "label": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "points": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prebattleRules": {
+ "items": {
+ "enum": [
+ "infiltrators",
+ "scouts"
+ ],
+ "type": "string"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "strategicReserveExempt": {
+ "type": "boolean"
+ },
+ "transport": {
+ "type": "boolean"
+ },
+ "transportRule": {
+ "maxLength": 4000,
+ "type": "string"
+ },
+ "upgrades": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "wargear": {
+ "items": {
+ "properties": {
+ "count": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "count"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "warlord": {
+ "type": "boolean"
+ },
+ "warlordEligible": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "points",
+ "models"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "catalogueId",
+ "revision",
+ "limit",
+ "detachment",
+ "disposition",
+ "units"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "reminders": {
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "any"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "round-start",
+ "round-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "const": "either",
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ },
+ "whileDestroyed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 20000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "text"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "roster"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "destroyed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "set-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "destroyed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-prep",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "deployed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "deploy-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "deployed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "formation": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-unit-formation",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "transportKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "formation"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-painted",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "painted"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "wound-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "damage-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-deployment",
+ "type": "string"
+ },
+ "patternId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "patternId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-battlefield",
+ "type": "string"
+ },
+ "patternId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "terrainLayoutId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "patternId",
+ "terrainLayoutId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "use-stratagem",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "use-new-orders",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "secondaryKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "stratagemKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagemKey",
+ "secondaryKey",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "score-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "score-settlement",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "scores": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "category": {
+ "const": "primary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "const": "secondary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "const": "achieved",
+ "type": "string"
+ }
+ },
+ "required": [
+ "category",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 31,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "scores"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-secondary-status",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "achieved",
+ "discarded",
+ "returned"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondaries",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "minItems": 1,
+ "type": "array"
+ },
+ "selected": {
+ "const": true,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-draw",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-scoring",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "select-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reveal-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "begin-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "adjust-cp",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "gainCp": {
+ "type": "boolean"
+ },
+ "keys": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "resolve-tactical-hand",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "score",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "correct-player",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "resource": {
+ "enum": [
+ "cp",
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "playerId",
+ "resource",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "settle-opponent-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "request-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "cancel-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "pause-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "resume-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "concededBy": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "end-battle",
+ "type": "string"
+ },
+ "reason": {
+ "enum": [
+ "completed",
+ "finished-early",
+ "conceded"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reopen-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "undo",
+ "type": "string"
+ },
+ "target": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "target"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "attach-saved-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "rosterId"
+ ],
+ "type": "object"
+ }
+]Input schema / properties / command / anyOfPrevious value: -[
- {
- "oneOf": [
- {
- "properties": {
- "clockLimitMinutes": {
- "anyOf": [
- {
- "maximum": 300,
- "minimum": 5,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "kind": {
- "const": "configure-battle",
- "type": "string"
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "missionPackId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerCount": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "teamBattle": {
- "type": "boolean"
- },
- "terrainLayoutId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "twistId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "limit",
- "missionPackId",
- "terrainLayoutId",
- "twistId",
- "clockLimitMinutes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reset-setup",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "detach-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "eventToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "lock-league-rosters",
- "type": "string"
- },
- "leagueToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "leagueToken"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-setup-step",
- "type": "string"
- },
- "step": {
- "maximum": 9,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "step"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-attacker",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "attackerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-first-turn",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-side-disposition",
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "side",
- "disposition"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "attach-roster",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "prep": {
- "anyOf": [
- {
- "properties": {
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "roster": {
- "properties": {
- "built": {
- "properties": {
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "detachment": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachmentIds": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "detachmentPointBudget": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachments": {
- "items": {
- "properties": {
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "points": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "points"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- },
- "disposition": {
- "anyOf": [
- {
- "maxLength": 64,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "picks": {
- "items": {
- "properties": {
- "attachedTo": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "choices": {
- "additionalProperties": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 60,
- "minimum": 1,
- "type": "integer"
- },
- "spreads": {
- "additionalProperties": {
- "additionalProperties": {
- "maximum": 60,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 64,
- "type": "string"
- },
- "type": "object"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "toggles": {
- "additionalProperties": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "entryId"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "revision": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "strategicReserveLimit": {
- "maximum": 5000,
- "minimum": 0,
- "type": "integer"
- },
- "units": {
- "items": {
- "properties": {
- "attachedTo": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "enhancements": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "formationOptions": {
- "items": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "maxItems": 4,
- "type": "array"
- },
- "group": {
- "enum": [
- "epic-hero",
- "character",
- "battleline",
- "infantry",
- "swarm",
- "mounted",
- "beast",
- "monster",
- "vehicle",
- "drone",
- "transport",
- "fortification",
- "other"
- ],
- "type": "string"
- },
- "joined": {
- "items": {
- "properties": {
- "label": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "label",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "points": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "prebattleRules": {
- "items": {
- "enum": [
- "infiltrators",
- "scouts"
- ],
- "type": "string"
- },
- "maxItems": 2,
- "type": "array"
- },
- "strategicReserveExempt": {
- "type": "boolean"
- },
- "transport": {
- "type": "boolean"
- },
- "transportRule": {
- "maxLength": 4000,
- "type": "string"
- },
- "upgrades": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "wargear": {
- "items": {
- "properties": {
- "count": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "count"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "warlord": {
- "type": "boolean"
- },
- "warlordEligible": {
- "type": "boolean"
- },
- "wounds": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "key",
- "name",
- "points",
- "models"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "waivedRules": {
- "items": {
- "enum": [
- "points-limit",
- "detachments",
- "detachment-points",
- "kotc-infantry",
- "kotc-warlord",
- "kotc-epic-heroes",
- "kotc-toughness",
- "kotc-datasheet-copies"
- ],
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- }
- },
- "required": [
- "catalogueId",
- "revision",
- "limit",
- "detachment",
- "disposition",
- "units"
- ],
- "type": "object"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "reminders": {
- "items": {
- "properties": {
- "ability": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "description": {
- "maxLength": 10000,
- "type": "string"
- },
- "key": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "timings": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "phase-start",
- "phase-end"
- ],
- "type": "string"
- },
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "any"
- ],
- "type": "string"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "turn-start",
- "turn-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstRoundOnly": {
- "type": "boolean"
- },
- "moment": {
- "enum": [
- "round-start",
- "round-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "const": "either",
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "unit": {
- "properties": {
- "index": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "index",
- "name"
- ],
- "type": "object"
- },
- "whileDestroyed": {
- "type": "boolean"
- }
- },
- "required": [
- "key",
- "ability",
- "description",
- "timings"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "remindersEnabled": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 20000,
- "type": "string"
- }
- },
- "required": [
- "name",
- "text"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "roster"
- ],
- "type": "object"
- },
- {
- "properties": {
- "destroyed": {
- "type": "boolean"
- },
- "kind": {
- "const": "set-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "destroyed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-prep",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "properties": {
- "deployed": {
- "type": "boolean"
- },
- "kind": {
- "const": "deploy-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "deployed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "formation": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "kind": {
- "const": "set-unit-formation",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "transportKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "formation"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-painted",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "painted"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "wound-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "damage-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-deployment",
- "type": "string"
- },
- "patternId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "patternId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-battlefield",
- "type": "string"
- },
- "patternId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "terrainLayoutId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "patternId",
- "terrainLayoutId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "use-stratagem",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "kind": {
- "const": "use-new-orders",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "secondaryKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "stratagemKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "stratagemKey",
- "secondaryKey",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "score-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "score-settlement",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "scores": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "category": {
- "const": "primary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "const": "secondary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "const": "achieved",
- "type": "string"
- }
- },
- "required": [
- "category",
- "key",
- "delta"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 31,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "scores"
- ],
- "type": "object"
- },
- {
- "properties": {
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-secondary-status",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "active",
- "achieved",
- "discarded",
- "returned"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "status"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondaries",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "minItems": 1,
- "type": "array"
- },
- "selected": {
- "const": true,
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "secondaries"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-draw",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-scoring",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "select-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reveal-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "begin-battle",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "adjust-cp",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "gainCp": {
- "type": "boolean"
- },
- "keys": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "kind": {
- "const": "resolve-tactical-hand",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "enum": [
- "primary",
- "secondary"
- ],
- "type": "string"
- },
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "score",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "correct-player",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "resource": {
- "enum": [
- "cp",
- "primary",
- "secondary"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "playerId",
- "resource",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "settle-opponent-turn",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "request-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "cancel-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "pause-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "resume-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "concededBy": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "end-battle",
- "type": "string"
- },
- "reason": {
- "enum": [
- "completed",
- "finished-early",
- "conceded"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reopen-battle",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "undo",
- "type": "string"
- },
- "target": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- }
- ]
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "attach-saved-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "rosterId"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "properties": {
+ "clockLimitMinutes": {
+ "anyOf": [
+ {
+ "maximum": 300,
+ "minimum": 5,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "kind": {
+ "const": "configure-battle",
+ "type": "string"
+ },
+ "limit": {
+ "anyOf": [
+ {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "missionPackId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerCount": {
+ "anyOf": [
+ {
+ "const": 2,
+ "type": "number"
+ },
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "teamBattle": {
+ "type": "boolean"
+ },
+ "terrainLayoutId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "twistId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "limit",
+ "missionPackId",
+ "terrainLayoutId",
+ "twistId",
+ "clockLimitMinutes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reset-setup",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "detach-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "eventToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "lock-league-rosters",
+ "type": "string"
+ },
+ "leagueToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "leagueToken"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-setup-step",
+ "type": "string"
+ },
+ "step": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "step"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-attacker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "attackerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-first-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-side-disposition",
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "attach-roster",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roster": {
+ "properties": {
+ "built": {
+ "properties": {
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachment": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "detachmentPointBudget": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachments": {
+ "items": {
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "points": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "points"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "revision": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategicReserveLimit": {
+ "maximum": 5000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "enhancements": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "formationOptions": {
+ "items": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "group": {
+ "enum": [
+ "epic-hero",
+ "character",
+ "battleline",
+ "infantry",
+ "swarm",
+ "mounted",
+ "beast",
+ "monster",
+ "vehicle",
+ "drone",
+ "transport",
+ "fortification",
+ "other"
+ ],
+ "type": "string"
+ },
+ "joined": {
+ "items": {
+ "properties": {
+ "label": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "points": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prebattleRules": {
+ "items": {
+ "enum": [
+ "infiltrators",
+ "scouts"
+ ],
+ "type": "string"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "strategicReserveExempt": {
+ "type": "boolean"
+ },
+ "transport": {
+ "type": "boolean"
+ },
+ "transportRule": {
+ "maxLength": 4000,
+ "type": "string"
+ },
+ "upgrades": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "wargear": {
+ "items": {
+ "properties": {
+ "count": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "count"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "warlord": {
+ "type": "boolean"
+ },
+ "warlordEligible": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "points",
+ "models"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "catalogueId",
+ "revision",
+ "limit",
+ "detachment",
+ "disposition",
+ "units"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "reminders": {
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "any"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "round-start",
+ "round-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "const": "either",
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ },
+ "whileDestroyed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 20000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "text"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "roster"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "destroyed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "set-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "destroyed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-prep",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "deployed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "deploy-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "deployed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "formation": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-unit-formation",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "transportKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "formation"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-painted",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "painted"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "wound-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "damage-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-deployment",
+ "type": "string"
+ },
+ "patternId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "patternId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-battlefield",
+ "type": "string"
+ },
+ "patternId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "terrainLayoutId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "patternId",
+ "terrainLayoutId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "use-stratagem",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "use-new-orders",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "secondaryKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "stratagemKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagemKey",
+ "secondaryKey",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "score-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "score-settlement",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "scores": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "category": {
+ "const": "primary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "const": "secondary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "const": "achieved",
+ "type": "string"
+ }
+ },
+ "required": [
+ "category",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 31,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "scores"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-secondary-status",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "achieved",
+ "discarded",
+ "returned"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondaries",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "minItems": 1,
+ "type": "array"
+ },
+ "selected": {
+ "const": true,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-draw",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-scoring",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "select-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reveal-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "begin-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "adjust-cp",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "gainCp": {
+ "type": "boolean"
+ },
+ "keys": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "resolve-tactical-hand",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "score",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "correct-player",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "resource": {
+ "enum": [
+ "cp",
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "playerId",
+ "resource",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "settle-opponent-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "request-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "cancel-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "pause-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "resume-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "concededBy": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "end-battle",
+ "type": "string"
+ },
+ "reason": {
+ "enum": [
+ "completed",
+ "finished-early",
+ "conceded"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reopen-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "undo",
+ "type": "string"
+ },
+ "target": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "target"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "attach-saved-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "rosterId"
+ ],
+ "type": "object"
+ }
+]Input schema / properties / command / anyOfPrevious value: -[
- {
- "oneOf": [
- {
- "properties": {
- "clockLimitMinutes": {
- "anyOf": [
- {
- "maximum": 300,
- "minimum": 5,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "kind": {
- "const": "configure-battle",
- "type": "string"
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "missionPackId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerCount": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "teamBattle": {
- "type": "boolean"
- },
- "terrainLayoutId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "twistId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "limit",
- "missionPackId",
- "terrainLayoutId",
- "twistId",
- "clockLimitMinutes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reset-setup",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "detach-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "eventToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "lock-league-rosters",
- "type": "string"
- },
- "leagueToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "leagueToken"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-setup-step",
- "type": "string"
- },
- "step": {
- "maximum": 9,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "step"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-attacker",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "attackerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-first-turn",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-side-disposition",
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "side",
- "disposition"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "attach-roster",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "prep": {
- "anyOf": [
- {
- "properties": {
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "roster": {
- "properties": {
- "built": {
- "properties": {
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "detachment": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachmentIds": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "detachmentPointBudget": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachments": {
- "items": {
- "properties": {
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "points": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "points"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- },
- "disposition": {
- "anyOf": [
- {
- "maxLength": 64,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "picks": {
- "items": {
- "properties": {
- "attachedTo": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "choices": {
- "additionalProperties": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 60,
- "minimum": 1,
- "type": "integer"
- },
- "spreads": {
- "additionalProperties": {
- "additionalProperties": {
- "maximum": 60,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 64,
- "type": "string"
- },
- "type": "object"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "toggles": {
- "additionalProperties": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "entryId"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "revision": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "strategicReserveLimit": {
- "maximum": 5000,
- "minimum": 0,
- "type": "integer"
- },
- "units": {
- "items": {
- "properties": {
- "attachedTo": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "enhancements": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "formationOptions": {
- "items": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "maxItems": 4,
- "type": "array"
- },
- "group": {
- "enum": [
- "epic-hero",
- "character",
- "battleline",
- "infantry",
- "swarm",
- "mounted",
- "beast",
- "monster",
- "vehicle",
- "drone",
- "transport",
- "fortification",
- "other"
- ],
- "type": "string"
- },
- "joined": {
- "items": {
- "properties": {
- "label": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "label",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "points": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "prebattleRules": {
- "items": {
- "enum": [
- "infiltrators",
- "scouts"
- ],
- "type": "string"
- },
- "maxItems": 2,
- "type": "array"
- },
- "strategicReserveExempt": {
- "type": "boolean"
- },
- "transport": {
- "type": "boolean"
- },
- "transportRule": {
- "maxLength": 4000,
- "type": "string"
- },
- "upgrades": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "wargear": {
- "items": {
- "properties": {
- "count": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "count"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "warlord": {
- "type": "boolean"
- },
- "warlordEligible": {
- "type": "boolean"
- },
- "wounds": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "key",
- "name",
- "points",
- "models"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "waivedRules": {
- "items": {
- "enum": [
- "points-limit",
- "detachments",
- "detachment-points",
- "kotc-infantry",
- "kotc-warlord",
- "kotc-epic-heroes",
- "kotc-toughness",
- "kotc-datasheet-copies"
- ],
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- }
- },
- "required": [
- "catalogueId",
- "revision",
- "limit",
- "detachment",
- "disposition",
- "units"
- ],
- "type": "object"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "reminders": {
- "items": {
- "properties": {
- "ability": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "description": {
- "maxLength": 10000,
- "type": "string"
- },
- "key": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "timings": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "moment": {
- "enum": [
- "phase-start",
- "phase-end"
- ],
- "type": "string"
- },
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight"
- ],
- "type": "string"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "moment": {
- "enum": [
- "turn-start",
- "turn-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "unit": {
- "properties": {
- "index": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "index",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "key",
- "ability",
- "description",
- "timings"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "remindersEnabled": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 20000,
- "type": "string"
- }
- },
- "required": [
- "name",
- "text"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "roster"
- ],
- "type": "object"
- },
- {
- "properties": {
- "destroyed": {
- "type": "boolean"
- },
- "kind": {
- "const": "set-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "destroyed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-prep",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle-round",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "properties": {
- "deployed": {
- "type": "boolean"
- },
- "kind": {
- "const": "deploy-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "deployed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "formation": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "kind": {
- "const": "set-unit-formation",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "transportKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "formation"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-painted",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "painted"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "wound-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "damage-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-deployment",
- "type": "string"
- },
- "patternId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "patternId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-battlefield",
- "type": "string"
- },
- "patternId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "terrainLayoutId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "patternId",
- "terrainLayoutId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "use-stratagem",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "kind": {
- "const": "use-new-orders",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "secondaryKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "stratagemKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "stratagemKey",
- "secondaryKey",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "score-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "score-settlement",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "scores": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "category": {
- "const": "primary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "const": "secondary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "const": "achieved",
- "type": "string"
- }
- },
- "required": [
- "category",
- "key",
- "delta"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 31,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "scores"
- ],
- "type": "object"
- },
- {
- "properties": {
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-secondary-status",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "active",
- "achieved",
- "discarded",
- "returned"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "status"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondaries",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "minItems": 1,
- "type": "array"
- },
- "selected": {
- "const": true,
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "secondaries"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-draw",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-scoring",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "select-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reveal-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "begin-battle",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "adjust-cp",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "gainCp": {
- "type": "boolean"
- },
- "keys": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "kind": {
- "const": "resolve-tactical-hand",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "enum": [
- "primary",
- "secondary"
- ],
- "type": "string"
- },
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "score",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "correct-player",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "resource": {
- "enum": [
- "cp",
- "primary",
- "secondary"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "playerId",
- "resource",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "settle-opponent-turn",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "request-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "cancel-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "pause-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "resume-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "concededBy": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "end-battle",
- "type": "string"
- },
- "reason": {
- "enum": [
- "completed",
- "finished-early",
- "conceded"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reopen-battle",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "undo",
- "type": "string"
- },
- "target": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- }
- ]
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "attach-saved-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "rosterId"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "properties": {
+ "clockLimitMinutes": {
+ "anyOf": [
+ {
+ "maximum": 300,
+ "minimum": 5,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "kind": {
+ "const": "configure-battle",
+ "type": "string"
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "missionPackId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerCount": {
+ "anyOf": [
+ {
+ "const": 2,
+ "type": "number"
+ },
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "teamBattle": {
+ "type": "boolean"
+ },
+ "terrainLayoutId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "twistId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "limit",
+ "missionPackId",
+ "terrainLayoutId",
+ "twistId",
+ "clockLimitMinutes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reset-setup",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "detach-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "eventToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "lock-league-rosters",
+ "type": "string"
+ },
+ "leagueToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "leagueToken"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-setup-step",
+ "type": "string"
+ },
+ "step": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "step"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-attacker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "attackerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-first-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-side-disposition",
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "attach-roster",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roster": {
+ "properties": {
+ "built": {
+ "properties": {
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachment": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "detachmentPointBudget": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachments": {
+ "items": {
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "points": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "points"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "revision": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategicReserveLimit": {
+ "maximum": 5000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "enhancements": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "formationOptions": {
+ "items": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "group": {
+ "enum": [
+ "epic-hero",
+ "character",
+ "battleline",
+ "infantry",
+ "swarm",
+ "mounted",
+ "beast",
+ "monster",
+ "vehicle",
+ "drone",
+ "transport",
+ "fortification",
+ "other"
+ ],
+ "type": "string"
+ },
+ "joined": {
+ "items": {
+ "properties": {
+ "label": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "points": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prebattleRules": {
+ "items": {
+ "enum": [
+ "infiltrators",
+ "scouts"
+ ],
+ "type": "string"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "strategicReserveExempt": {
+ "type": "boolean"
+ },
+ "transport": {
+ "type": "boolean"
+ },
+ "transportRule": {
+ "maxLength": 4000,
+ "type": "string"
+ },
+ "upgrades": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "wargear": {
+ "items": {
+ "properties": {
+ "count": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "count"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "warlord": {
+ "type": "boolean"
+ },
+ "warlordEligible": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "points",
+ "models"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "catalogueId",
+ "revision",
+ "limit",
+ "detachment",
+ "disposition",
+ "units"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "reminders": {
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "any"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstRoundOnly": {
+ "type": "boolean"
+ },
+ "moment": {
+ "enum": [
+ "round-start",
+ "round-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "const": "either",
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ },
+ "whileDestroyed": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 20000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "text"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "roster"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "destroyed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "set-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "destroyed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-prep",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "deployed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "deploy-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "deployed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "formation": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-unit-formation",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "transportKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "formation"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-painted",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "painted"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "wound-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "damage-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-deployment",
+ "type": "string"
+ },
+ "patternId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "patternId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-battlefield",
+ "type": "string"
+ },
+ "patternId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "terrainLayoutId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "patternId",
+ "terrainLayoutId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "use-stratagem",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "use-new-orders",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "secondaryKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "stratagemKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagemKey",
+ "secondaryKey",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "score-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "score-settlement",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "scores": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "category": {
+ "const": "primary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "const": "secondary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "const": "achieved",
+ "type": "string"
+ }
+ },
+ "required": [
+ "category",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 31,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "scores"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-secondary-status",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "achieved",
+ "discarded",
+ "returned"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondaries",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "minItems": 1,
+ "type": "array"
+ },
+ "selected": {
+ "const": true,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-draw",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-scoring",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "select-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reveal-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "begin-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "adjust-cp",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "gainCp": {
+ "type": "boolean"
+ },
+ "keys": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "resolve-tactical-hand",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "score",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "correct-player",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "resource": {
+ "enum": [
+ "cp",
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "playerId",
+ "resource",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "settle-opponent-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "request-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "cancel-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "pause-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "resume-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "concededBy": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "end-battle",
+ "type": "string"
+ },
+ "reason": {
+ "enum": [
+ "completed",
+ "finished-early",
+ "conceded"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reopen-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "undo",
+ "type": "string"
+ },
+ "target": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "target"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "attach-saved-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "rosterId"
+ ],
+ "type": "object"
+ }
+]Input schema / properties / command / anyOfPrevious value: -[
- {
- "oneOf": [
- {
- "properties": {
- "clockLimitMinutes": {
- "anyOf": [
- {
- "maximum": 300,
- "minimum": 5,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "kind": {
- "const": "configure-battle",
- "type": "string"
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "missionPackId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerCount": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "teamBattle": {
- "type": "boolean"
- },
- "terrainLayoutId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "twistId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "limit",
- "missionPackId",
- "terrainLayoutId",
- "twistId",
- "clockLimitMinutes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reset-setup",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "detach-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "eventToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "lock-league-rosters",
- "type": "string"
- },
- "leagueToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "leagueToken"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-setup-step",
- "type": "string"
- },
- "step": {
- "maximum": 9,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "step"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-attacker",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "attackerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-first-turn",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-side-disposition",
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "side",
- "disposition"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "attach-roster",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "prep": {
- "anyOf": [
- {
- "properties": {
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "roster": {
- "properties": {
- "built": {
- "properties": {
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "detachment": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachmentIds": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "detachmentPointBudget": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachments": {
- "items": {
- "properties": {
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "points": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "points"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- },
- "disposition": {
- "anyOf": [
- {
- "maxLength": 64,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "picks": {
- "items": {
- "properties": {
- "attachedTo": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "choices": {
- "additionalProperties": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 60,
- "minimum": 1,
- "type": "integer"
- },
- "spreads": {
- "additionalProperties": {
- "additionalProperties": {
- "maximum": 60,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 64,
- "type": "string"
- },
- "type": "object"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "toggles": {
- "additionalProperties": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "entryId"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "revision": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "strategicReserveLimit": {
- "maximum": 5000,
- "minimum": 0,
- "type": "integer"
- },
- "units": {
- "items": {
- "properties": {
- "attachedTo": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "enhancements": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "formationOptions": {
- "items": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "maxItems": 4,
- "type": "array"
- },
- "group": {
- "enum": [
- "epic-hero",
- "character",
- "battleline",
- "infantry",
- "swarm",
- "mounted",
- "beast",
- "monster",
- "vehicle",
- "drone",
- "transport",
- "fortification",
- "other"
- ],
- "type": "string"
- },
- "joined": {
- "items": {
- "properties": {
- "label": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "label",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "points": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "prebattleRules": {
- "items": {
- "enum": [
- "infiltrators",
- "scouts"
- ],
- "type": "string"
- },
- "maxItems": 2,
- "type": "array"
- },
- "strategicReserveExempt": {
- "type": "boolean"
- },
- "transport": {
- "type": "boolean"
- },
- "transportRule": {
- "maxLength": 4000,
- "type": "string"
- },
- "upgrades": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "wargear": {
- "items": {
- "properties": {
- "count": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "count"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "warlord": {
- "type": "boolean"
- },
- "warlordEligible": {
- "type": "boolean"
- },
- "wounds": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "key",
- "name",
- "points",
- "models"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "waivedRules": {
- "items": {
- "enum": [
- "points-limit",
- "detachments",
- "detachment-points",
- "kotc-infantry",
- "kotc-warlord",
- "kotc-epic-heroes",
- "kotc-toughness",
- "kotc-datasheet-copies"
- ],
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- }
- },
- "required": [
- "catalogueId",
- "revision",
- "limit",
- "detachment",
- "disposition",
- "units"
- ],
- "type": "object"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "reminders": {
- "items": {
- "properties": {
- "ability": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "description": {
- "maxLength": 10000,
- "type": "string"
- },
- "key": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "timings": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "moment": {
- "enum": [
- "phase-start",
- "phase-end"
- ],
- "type": "string"
- },
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight"
- ],
- "type": "string"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "moment": {
- "enum": [
- "turn-start",
- "turn-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "unit": {
- "properties": {
- "index": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "index",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "key",
- "ability",
- "description",
- "timings"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "remindersEnabled": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 20000,
- "type": "string"
- }
- },
- "required": [
- "name",
- "text"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "roster"
- ],
- "type": "object"
- },
- {
- "properties": {
- "destroyed": {
- "type": "boolean"
- },
- "kind": {
- "const": "set-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "destroyed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-prep",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "properties": {
- "deployed": {
- "type": "boolean"
- },
- "kind": {
- "const": "deploy-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "deployed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "formation": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "kind": {
- "const": "set-unit-formation",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "transportKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "formation"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-painted",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "painted"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "wound-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "damage-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-deployment",
- "type": "string"
- },
- "patternId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "patternId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-battlefield",
- "type": "string"
- },
- "patternId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "terrainLayoutId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "patternId",
- "terrainLayoutId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "use-stratagem",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "kind": {
- "const": "use-new-orders",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "secondaryKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "stratagemKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "stratagemKey",
- "secondaryKey",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "score-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "score-settlement",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "scores": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "category": {
- "const": "primary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "const": "secondary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "const": "achieved",
- "type": "string"
- }
- },
- "required": [
- "category",
- "key",
- "delta"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 31,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "scores"
- ],
- "type": "object"
- },
- {
- "properties": {
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-secondary-status",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "active",
- "achieved",
- "discarded",
- "returned"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "status"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondaries",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "minItems": 1,
- "type": "array"
- },
- "selected": {
- "const": true,
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "secondaries"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-draw",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-scoring",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "select-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reveal-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "begin-battle",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "adjust-cp",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "gainCp": {
- "type": "boolean"
- },
- "keys": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "kind": {
- "const": "resolve-tactical-hand",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "enum": [
- "primary",
- "secondary"
- ],
- "type": "string"
- },
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "score",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "correct-player",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "resource": {
- "enum": [
- "cp",
- "primary",
- "secondary"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "playerId",
- "resource",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "settle-opponent-turn",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "request-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "cancel-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "pause-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "resume-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "concededBy": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "end-battle",
- "type": "string"
- },
- "reason": {
- "enum": [
- "completed",
- "finished-early",
- "conceded"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reopen-battle",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "undo",
- "type": "string"
- },
- "target": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- }
- ]
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "attach-saved-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "rosterId"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "properties": {
+ "clockLimitMinutes": {
+ "anyOf": [
+ {
+ "maximum": 300,
+ "minimum": 5,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "kind": {
+ "const": "configure-battle",
+ "type": "string"
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "missionPackId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerCount": {
+ "anyOf": [
+ {
+ "const": 2,
+ "type": "number"
+ },
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "teamBattle": {
+ "type": "boolean"
+ },
+ "terrainLayoutId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "twistId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "limit",
+ "missionPackId",
+ "terrainLayoutId",
+ "twistId",
+ "clockLimitMinutes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reset-setup",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "detach-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "eventToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "lock-league-rosters",
+ "type": "string"
+ },
+ "leagueToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "leagueToken"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-setup-step",
+ "type": "string"
+ },
+ "step": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "step"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-attacker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "attackerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-first-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-side-disposition",
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "attach-roster",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roster": {
+ "properties": {
+ "built": {
+ "properties": {
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachment": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "detachmentPointBudget": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachments": {
+ "items": {
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "points": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "points"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "revision": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategicReserveLimit": {
+ "maximum": 5000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "enhancements": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "formationOptions": {
+ "items": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "group": {
+ "enum": [
+ "epic-hero",
+ "character",
+ "battleline",
+ "infantry",
+ "swarm",
+ "mounted",
+ "beast",
+ "monster",
+ "vehicle",
+ "drone",
+ "transport",
+ "fortification",
+ "other"
+ ],
+ "type": "string"
+ },
+ "joined": {
+ "items": {
+ "properties": {
+ "label": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "points": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prebattleRules": {
+ "items": {
+ "enum": [
+ "infiltrators",
+ "scouts"
+ ],
+ "type": "string"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "strategicReserveExempt": {
+ "type": "boolean"
+ },
+ "transport": {
+ "type": "boolean"
+ },
+ "transportRule": {
+ "maxLength": 4000,
+ "type": "string"
+ },
+ "upgrades": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "wargear": {
+ "items": {
+ "properties": {
+ "count": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "count"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "warlord": {
+ "type": "boolean"
+ },
+ "warlordEligible": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "points",
+ "models"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "catalogueId",
+ "revision",
+ "limit",
+ "detachment",
+ "disposition",
+ "units"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "reminders": {
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 20000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "text"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "roster"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "destroyed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "set-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "destroyed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-prep",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle-round",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "deployed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "deploy-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "deployed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "formation": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-unit-formation",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "transportKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "formation"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-painted",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "painted"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "wound-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "damage-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-deployment",
+ "type": "string"
+ },
+ "patternId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "patternId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-battlefield",
+ "type": "string"
+ },
+ "patternId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "terrainLayoutId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "patternId",
+ "terrainLayoutId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "use-stratagem",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "use-new-orders",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "secondaryKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "stratagemKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagemKey",
+ "secondaryKey",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "score-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "score-settlement",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "scores": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "category": {
+ "const": "primary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "const": "secondary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "const": "achieved",
+ "type": "string"
+ }
+ },
+ "required": [
+ "category",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 31,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "scores"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-secondary-status",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "achieved",
+ "discarded",
+ "returned"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondaries",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "minItems": 1,
+ "type": "array"
+ },
+ "selected": {
+ "const": true,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-draw",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-scoring",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "select-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reveal-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "begin-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "adjust-cp",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "gainCp": {
+ "type": "boolean"
+ },
+ "keys": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "resolve-tactical-hand",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "score",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "correct-player",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "resource": {
+ "enum": [
+ "cp",
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "playerId",
+ "resource",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "settle-opponent-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "request-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "cancel-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "pause-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "resume-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "concededBy": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "end-battle",
+ "type": "string"
+ },
+ "reason": {
+ "enum": [
+ "completed",
+ "finished-early",
+ "conceded"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reopen-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "undo",
+ "type": "string"
+ },
+ "target": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "target"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "attach-saved-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "rosterId"
+ ],
+ "type": "object"
+ }
+]Input schema / properties / command / anyOfPrevious value: -[
- {
- "oneOf": [
- {
- "properties": {
- "clockLimitMinutes": {
- "anyOf": [
- {
- "maximum": 300,
- "minimum": 5,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "kind": {
- "const": "configure-battle",
- "type": "string"
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "missionPackId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerCount": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "teamBattle": {
- "type": "boolean"
- },
- "terrainLayoutId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "twistId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "limit",
- "missionPackId",
- "terrainLayoutId",
- "twistId",
- "clockLimitMinutes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reset-setup",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "detach-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "eventToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "lock-league-rosters",
- "type": "string"
- },
- "leagueToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "leagueToken"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-setup-step",
- "type": "string"
- },
- "step": {
- "maximum": 9,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "step"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-attacker",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "attackerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-first-turn",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-side-disposition",
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "side",
- "disposition"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "attach-roster",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "prep": {
- "anyOf": [
- {
- "properties": {
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "roster": {
- "properties": {
- "built": {
- "properties": {
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "detachment": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachmentIds": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "detachmentPointBudget": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachments": {
- "items": {
- "properties": {
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "points": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "points"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- },
- "disposition": {
- "anyOf": [
- {
- "maxLength": 64,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "picks": {
- "items": {
- "properties": {
- "attachedTo": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "choices": {
- "additionalProperties": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 60,
- "minimum": 1,
- "type": "integer"
- },
- "spreads": {
- "additionalProperties": {
- "additionalProperties": {
- "maximum": 60,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 64,
- "type": "string"
- },
- "type": "object"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "toggles": {
- "additionalProperties": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "entryId"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "revision": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "strategicReserveLimit": {
- "maximum": 5000,
- "minimum": 0,
- "type": "integer"
- },
- "units": {
- "items": {
- "properties": {
- "attachedTo": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "enhancements": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "formationOptions": {
- "items": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "maxItems": 4,
- "type": "array"
- },
- "group": {
- "enum": [
- "epic-hero",
- "character",
- "battleline",
- "infantry",
- "swarm",
- "mounted",
- "beast",
- "monster",
- "vehicle",
- "drone",
- "transport",
- "fortification",
- "other"
- ],
- "type": "string"
- },
- "joined": {
- "items": {
- "properties": {
- "label": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "label",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "points": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "prebattleRules": {
- "items": {
- "enum": [
- "infiltrators",
- "scouts"
- ],
- "type": "string"
- },
- "maxItems": 2,
- "type": "array"
- },
- "strategicReserveExempt": {
- "type": "boolean"
- },
- "transport": {
- "type": "boolean"
- },
- "transportRule": {
- "maxLength": 4000,
- "type": "string"
- },
- "upgrades": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "wargear": {
- "items": {
- "properties": {
- "count": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "count"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "warlord": {
- "type": "boolean"
- },
- "warlordEligible": {
- "type": "boolean"
- },
- "wounds": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "key",
- "name",
- "points",
- "models"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "waivedRules": {
- "items": {
- "enum": [
- "points-limit",
- "detachments",
- "detachment-points",
- "kotc-infantry",
- "kotc-warlord",
- "kotc-epic-heroes",
- "kotc-toughness",
- "kotc-datasheet-copies"
- ],
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- }
- },
- "required": [
- "catalogueId",
- "revision",
- "limit",
- "detachment",
- "disposition",
- "units"
- ],
- "type": "object"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "reminders": {
- "items": {
- "properties": {
- "ability": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "description": {
- "maxLength": 10000,
- "type": "string"
- },
- "key": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "timings": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "moment": {
- "enum": [
- "phase-start",
- "phase-end"
- ],
- "type": "string"
- },
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight"
- ],
- "type": "string"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "moment": {
- "enum": [
- "turn-start",
- "turn-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "unit": {
- "properties": {
- "index": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "index",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "key",
- "ability",
- "description",
- "timings"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "remindersEnabled": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 20000,
- "type": "string"
- }
- },
- "required": [
- "name",
- "text"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "roster"
- ],
- "type": "object"
- },
- {
- "properties": {
- "destroyed": {
- "type": "boolean"
- },
- "kind": {
- "const": "set-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "destroyed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-prep",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "properties": {
- "deployed": {
- "type": "boolean"
- },
- "kind": {
- "const": "deploy-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "deployed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "formation": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "kind": {
- "const": "set-unit-formation",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "transportKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "formation"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-painted",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "painted"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "wound-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "damage-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-deployment",
- "type": "string"
- },
- "patternId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "patternId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-battlefield",
- "type": "string"
- },
- "patternId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "terrainLayoutId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "patternId",
- "terrainLayoutId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "use-stratagem",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "kind": {
- "const": "use-new-orders",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "secondaryKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "stratagemKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "stratagemKey",
- "secondaryKey",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "score-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "score-settlement",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "scores": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "category": {
- "const": "primary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "const": "secondary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "const": "achieved",
- "type": "string"
- }
- },
- "required": [
- "category",
- "key",
- "delta"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 31,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "scores"
- ],
- "type": "object"
- },
- {
- "properties": {
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-secondary-status",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "active",
- "achieved",
- "discarded",
- "returned"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "status"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondaries",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "minItems": 1,
- "type": "array"
- },
- "selected": {
- "const": true,
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "secondaries"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-draw",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-scoring",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "select-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reveal-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "begin-battle",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "adjust-cp",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "gainCp": {
- "type": "boolean"
- },
- "keys": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "kind": {
- "const": "resolve-tactical-hand",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "enum": [
- "primary",
- "secondary"
- ],
- "type": "string"
- },
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "score",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "correct-player",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "resource": {
- "enum": [
- "cp",
- "primary",
- "secondary"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "playerId",
- "resource",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "settle-opponent-turn",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "request-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "cancel-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "pause-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "resume-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "concededBy": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "end-battle",
- "type": "string"
- },
- "reason": {
- "enum": [
- "completed",
- "finished-early",
- "conceded"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reopen-battle",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "undo",
- "type": "string"
- },
- "target": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- }
- ]
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "attach-saved-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "rosterId"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "properties": {
+ "clockLimitMinutes": {
+ "anyOf": [
+ {
+ "maximum": 300,
+ "minimum": 5,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "kind": {
+ "const": "configure-battle",
+ "type": "string"
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "missionPackId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerCount": {
+ "anyOf": [
+ {
+ "const": 2,
+ "type": "number"
+ },
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "teamBattle": {
+ "type": "boolean"
+ },
+ "terrainLayoutId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "twistId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "limit",
+ "missionPackId",
+ "terrainLayoutId",
+ "twistId",
+ "clockLimitMinutes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reset-setup",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "detach-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "eventToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "lock-league-rosters",
+ "type": "string"
+ },
+ "leagueToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "leagueToken"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-setup-step",
+ "type": "string"
+ },
+ "step": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "step"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-attacker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "attackerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-first-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-side-disposition",
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "attach-roster",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roster": {
+ "properties": {
+ "built": {
+ "properties": {
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachment": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "detachmentPointBudget": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachments": {
+ "items": {
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "points": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "points"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "revision": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategicReserveLimit": {
+ "maximum": 5000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "enhancements": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "formationOptions": {
+ "items": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "group": {
+ "enum": [
+ "epic-hero",
+ "character",
+ "battleline",
+ "infantry",
+ "swarm",
+ "mounted",
+ "beast",
+ "monster",
+ "vehicle",
+ "drone",
+ "transport",
+ "fortification",
+ "other"
+ ],
+ "type": "string"
+ },
+ "joined": {
+ "items": {
+ "properties": {
+ "label": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "points": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prebattleRules": {
+ "items": {
+ "enum": [
+ "infiltrators",
+ "scouts"
+ ],
+ "type": "string"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "strategicReserveExempt": {
+ "type": "boolean"
+ },
+ "transport": {
+ "type": "boolean"
+ },
+ "transportRule": {
+ "maxLength": 4000,
+ "type": "string"
+ },
+ "upgrades": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "wargear": {
+ "items": {
+ "properties": {
+ "count": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "count"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "warlord": {
+ "type": "boolean"
+ },
+ "warlordEligible": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "points",
+ "models"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "catalogueId",
+ "revision",
+ "limit",
+ "detachment",
+ "disposition",
+ "units"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "reminders": {
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 20000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "text"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "roster"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "destroyed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "set-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "destroyed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-prep",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "deployed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "deploy-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "deployed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "formation": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-unit-formation",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "transportKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "formation"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-painted",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "painted"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "wound-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "damage-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-deployment",
+ "type": "string"
+ },
+ "patternId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "patternId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-battlefield",
+ "type": "string"
+ },
+ "patternId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "terrainLayoutId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "patternId",
+ "terrainLayoutId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "use-stratagem",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "use-new-orders",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "secondaryKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "stratagemKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagemKey",
+ "secondaryKey",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "score-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "score-settlement",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "scores": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "category": {
+ "const": "primary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "const": "secondary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "const": "achieved",
+ "type": "string"
+ }
+ },
+ "required": [
+ "category",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 31,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "scores"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-secondary-status",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "achieved",
+ "discarded",
+ "returned"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondaries",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "minItems": 1,
+ "type": "array"
+ },
+ "selected": {
+ "const": true,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-draw",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-scoring",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "select-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reveal-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "begin-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "adjust-cp",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "gainCp": {
+ "type": "boolean"
+ },
+ "keys": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "resolve-tactical-hand",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "score",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "correct-player",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "resource": {
+ "enum": [
+ "cp",
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "playerId",
+ "resource",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "settle-opponent-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "request-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "cancel-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "pause-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "resume-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "concededBy": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "end-battle",
+ "type": "string"
+ },
+ "reason": {
+ "enum": [
+ "completed",
+ "finished-early",
+ "conceded"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reopen-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "undo",
+ "type": "string"
+ },
+ "target": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "target"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "attach-saved-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "rosterId"
+ ],
+ "type": "object"
+ }
+]Input schema / properties / command / anyOfPrevious value: -[
- {
- "oneOf": [
- {
- "properties": {
- "clockLimitMinutes": {
- "anyOf": [
- {
- "maximum": 300,
- "minimum": 5,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "kind": {
- "const": "configure-battle",
- "type": "string"
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "missionPackId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerCount": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "teamBattle": {
- "type": "boolean"
- },
- "terrainLayoutId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "twistId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "limit",
- "missionPackId",
- "terrainLayoutId",
- "twistId",
- "clockLimitMinutes"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reset-setup",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "detach-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "eventToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "lock-league-rosters",
- "type": "string"
- },
- "leagueToken": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "leagueToken"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-setup-step",
- "type": "string"
- },
- "step": {
- "maximum": 9,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "step"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-attacker",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "attackerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-first-turn",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "disposition": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-side-disposition",
- "type": "string"
- },
- "side": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "side",
- "disposition"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "attach-roster",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "prep": {
- "anyOf": [
- {
- "properties": {
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "roster": {
- "properties": {
- "built": {
- "properties": {
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "detachment": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachmentIds": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "detachmentPointBudget": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "detachments": {
- "items": {
- "properties": {
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "points": {
- "anyOf": [
- {
- "maximum": 3,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "name",
- "points"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "type": "array"
- },
- "disposition": {
- "anyOf": [
- {
- "maxLength": 64,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "limit": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "picks": {
- "items": {
- "properties": {
- "attachedTo": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "catalogueId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "choices": {
- "additionalProperties": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 60,
- "minimum": 1,
- "type": "integer"
- },
- "spreads": {
- "additionalProperties": {
- "additionalProperties": {
- "maximum": 60,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 64,
- "type": "string"
- },
- "type": "object"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- },
- "toggles": {
- "additionalProperties": {
- "maximum": 1,
- "minimum": 0,
- "type": "integer"
- },
- "propertyNames": {
- "maxLength": 400,
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "entryId"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "revision": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "strategicReserveLimit": {
- "maximum": 5000,
- "minimum": 0,
- "type": "integer"
- },
- "units": {
- "items": {
- "properties": {
- "attachedTo": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "enhancements": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "entryId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "formationOptions": {
- "items": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "maxItems": 4,
- "type": "array"
- },
- "group": {
- "enum": [
- "epic-hero",
- "character",
- "battleline",
- "infantry",
- "swarm",
- "mounted",
- "beast",
- "monster",
- "vehicle",
- "drone",
- "transport",
- "fortification",
- "other"
- ],
- "type": "string"
- },
- "joined": {
- "items": {
- "properties": {
- "label": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "label",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "models": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "points": {
- "maximum": 10000,
- "minimum": 0,
- "type": "integer"
- },
- "prebattleRules": {
- "items": {
- "enum": [
- "infiltrators",
- "scouts"
- ],
- "type": "string"
- },
- "maxItems": 2,
- "type": "array"
- },
- "strategicReserveExempt": {
- "type": "boolean"
- },
- "transport": {
- "type": "boolean"
- },
- "transportRule": {
- "maxLength": 4000,
- "type": "string"
- },
- "upgrades": {
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "wargear": {
- "items": {
- "properties": {
- "count": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "count"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "warlord": {
- "type": "boolean"
- },
- "warlordEligible": {
- "type": "boolean"
- },
- "wounds": {
- "maximum": 100,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "key",
- "name",
- "points",
- "models"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "waivedRules": {
- "items": {
- "enum": [
- "detachments",
- "detachment-points",
- "kotc-infantry",
- "kotc-warlord",
- "kotc-epic-heroes",
- "kotc-toughness",
- "kotc-datasheet-copies"
- ],
- "type": "string"
- },
- "maxItems": 7,
- "type": "array"
- }
- },
- "required": [
- "catalogueId",
- "revision",
- "limit",
- "detachment",
- "disposition",
- "units"
- ],
- "type": "object"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "type": "string"
- },
- "reminders": {
- "items": {
- "properties": {
- "ability": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "description": {
- "maxLength": 10000,
- "type": "string"
- },
- "key": {
- "maxLength": 240,
- "minLength": 1,
- "type": "string"
- },
- "timings": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "moment": {
- "enum": [
- "phase-start",
- "phase-end"
- ],
- "type": "string"
- },
- "phase": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight"
- ],
- "type": "string"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- },
- {
- "properties": {
- "moment": {
- "enum": [
- "turn-start",
- "turn-end"
- ],
- "type": "string"
- },
- "phase": {
- "type": "null"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "moment",
- "phase",
- "turn"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "unit": {
- "properties": {
- "index": {
- "maximum": 99,
- "minimum": 0,
- "type": "integer"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "index",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "key",
- "ability",
- "description",
- "timings"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "type": "array"
- },
- "remindersEnabled": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 20000,
- "type": "string"
- }
- },
- "required": [
- "name",
- "text"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "roster"
- ],
- "type": "object"
- },
- {
- "properties": {
- "destroyed": {
- "type": "boolean"
- },
- "kind": {
- "const": "set-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "destroyed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-prep",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "anyOf": [
- {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 6,
- "type": "array"
- },
- "secondaryDeck": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 60,
- "type": "array"
- },
- "secondaryMode": {
- "enum": [
- "fixed",
- "tactical"
- ],
- "type": "string"
- },
- "stratagems": {
- "items": {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "detachment": {
- "maxLength": 249,
- "minLength": 1,
- "type": "string"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "limit": {
- "enum": [
- "phase",
- "turn",
- "battle",
- "unlimited"
- ],
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "phases": {
- "items": {
- "enum": [
- "command",
- "movement",
- "shooting",
- "charge",
- "fight",
- "end"
- ],
- "type": "string"
- },
- "maxItems": 6,
- "type": "array"
- },
- "turn": {
- "enum": [
- "your-turn",
- "opponent-turn",
- "either"
- ],
- "type": "string"
- }
- },
- "required": [
- "key",
- "name",
- "cp",
- "limit"
- ],
- "type": "object"
- },
- "maxItems": 48,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stratagems",
- "secondaries",
- "primary",
- "secondaryMode"
- ],
- "type": "object"
- },
- {
- "properties": {
- "deployed": {
- "type": "boolean"
- },
- "kind": {
- "const": "deploy-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "deployed"
- ],
- "type": "object"
- },
- {
- "properties": {
- "formation": {
- "enum": [
- "battlefield",
- "strategic-reserves",
- "deep-strike",
- "embarked"
- ],
- "type": "string"
- },
- "kind": {
- "const": "set-unit-formation",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "transportKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "formation"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-painted",
- "type": "string"
- },
- "painted": {
- "type": "boolean"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "painted"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "wound-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "damage-unit",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "unitKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "unitKey",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-deployment",
- "type": "string"
- },
- "patternId": {
- "anyOf": [
- {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "kind",
- "patternId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "set-battlefield",
- "type": "string"
- },
- "patternId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "terrainLayoutId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "patternId",
- "terrainLayoutId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "use-stratagem",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cp": {
- "maximum": 6,
- "minimum": 0,
- "type": "integer"
- },
- "kind": {
- "const": "use-new-orders",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "secondaryKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "stratagemKey": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "stratagemKey",
- "secondaryKey",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "score-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "score-settlement",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "round": {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- "scores": {
- "items": {
- "oneOf": [
- {
- "properties": {
- "category": {
- "const": "primary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "const": "secondary",
- "type": "string"
- },
- "delta": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "const": "achieved",
- "type": "string"
- }
- },
- "required": [
- "category",
- "key",
- "delta"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 31,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "scores"
- ],
- "type": "object"
- },
- {
- "properties": {
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "set-secondary-status",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "status": {
- "enum": [
- "active",
- "achieved",
- "discarded",
- "returned"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "key",
- "status"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondary",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "draw-secondaries",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondaries": {
- "items": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- },
- "maxItems": 2,
- "minItems": 1,
- "type": "array"
- },
- "selected": {
- "const": true,
- "type": "boolean"
- }
- },
- "required": [
- "kind",
- "secondaries"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-draw",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "acknowledge-scoring",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "select-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "secondary": {
- "properties": {
- "awards": {
- "items": {
- "properties": {
- "criteria": {
- "anyOf": [
- {
- "maxLength": 2000,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cumulative": {
- "type": "boolean"
- },
- "group": {
- "anyOf": [
- {
- "maxLength": 100,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "max": {
- "anyOf": [
- {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "mode": {
- "anyOf": [
- {
- "maxLength": 40,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "per": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "trigger": {
- "properties": {
- "phase": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "playerTurn": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMax": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "roundMin": {
- "anyOf": [
- {
- "maximum": 5,
- "minimum": 1,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ]
- },
- "timing": {
- "anyOf": [
- {
- "maxLength": 80,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "timing",
- "phase",
- "playerTurn",
- "roundMin",
- "roundMax"
- ],
- "type": "object"
- },
- "vp": {
- "maximum": 100,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "vp",
- "per",
- "mode",
- "max",
- "group",
- "cumulative",
- "criteria",
- "trigger"
- ],
- "type": "object"
- },
- "maxItems": 20,
- "type": "array"
- },
- "key": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "name": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "key",
- "name"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "secondary"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reveal-secret",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "attackerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "firstPlayerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "begin-battle",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "firstPlayerId"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "adjust-cp",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "gainCp": {
- "type": "boolean"
- },
- "keys": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "kind": {
- "const": "resolve-tactical-hand",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "category": {
- "enum": [
- "primary",
- "secondary"
- ],
- "type": "string"
- },
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "score",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "category",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "delta": {
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "kind": {
- "const": "correct-player",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "resource": {
- "enum": [
- "cp",
- "primary",
- "secondary"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "playerId",
- "resource",
- "delta"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "settle-opponent-turn",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "request-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "cancel-advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "advance",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "pause-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "resume-clock",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "concededBy": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "end-battle",
- "type": "string"
- },
- "reason": {
- "enum": [
- "completed",
- "finished-early",
- "conceded"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "reopen-battle",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "properties": {
- "kind": {
- "const": "undo",
- "type": "string"
- },
- "target": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "kind",
- "target"
- ],
- "type": "object"
- }
- ]
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "attach-saved-roster",
- "type": "string"
- },
- "playerId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "rosterId": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "kind",
- "rosterId"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "oneOf": [
+ {
+ "properties": {
+ "clockLimitMinutes": {
+ "anyOf": [
+ {
+ "maximum": 300,
+ "minimum": 5,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "kind": {
+ "const": "configure-battle",
+ "type": "string"
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "missionPackId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerCount": {
+ "anyOf": [
+ {
+ "const": 2,
+ "type": "number"
+ },
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "teamBattle": {
+ "type": "boolean"
+ },
+ "terrainLayoutId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "twistId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "limit",
+ "missionPackId",
+ "terrainLayoutId",
+ "twistId",
+ "clockLimitMinutes"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reset-setup",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "detach-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "eventToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "lock-league-rosters",
+ "type": "string"
+ },
+ "leagueToken": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "leagueToken"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-setup-step",
+ "type": "string"
+ },
+ "step": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "step"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-attacker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "attackerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-first-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "disposition": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-side-disposition",
+ "type": "string"
+ },
+ "side": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "side",
+ "disposition"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "attach-roster",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "prep": {
+ "anyOf": [
+ {
+ "properties": {
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roster": {
+ "properties": {
+ "built": {
+ "properties": {
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "detachment": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachmentIds": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "detachmentPointBudget": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "detachments": {
+ "items": {
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "points": {
+ "anyOf": [
+ {
+ "maximum": 3,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "points"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "disposition": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "limit": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "picks": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "catalogueId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "choices": {
+ "additionalProperties": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 60,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "spreads": {
+ "additionalProperties": {
+ "additionalProperties": {
+ "maximum": 60,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "toggles": {
+ "additionalProperties": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "propertyNames": {
+ "maxLength": 400,
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "entryId"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "revision": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategicReserveLimit": {
+ "maximum": 5000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "units": {
+ "items": {
+ "properties": {
+ "attachedTo": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "enhancements": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "entryId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "formationOptions": {
+ "items": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "group": {
+ "enum": [
+ "epic-hero",
+ "character",
+ "battleline",
+ "infantry",
+ "swarm",
+ "mounted",
+ "beast",
+ "monster",
+ "vehicle",
+ "drone",
+ "transport",
+ "fortification",
+ "other"
+ ],
+ "type": "string"
+ },
+ "joined": {
+ "items": {
+ "properties": {
+ "label": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "models": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "points": {
+ "maximum": 10000,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prebattleRules": {
+ "items": {
+ "enum": [
+ "infiltrators",
+ "scouts"
+ ],
+ "type": "string"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "strategicReserveExempt": {
+ "type": "boolean"
+ },
+ "transport": {
+ "type": "boolean"
+ },
+ "transportRule": {
+ "maxLength": 4000,
+ "type": "string"
+ },
+ "upgrades": {
+ "items": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "wargear": {
+ "items": {
+ "properties": {
+ "count": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "count"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "warlord": {
+ "type": "boolean"
+ },
+ "warlordEligible": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "points",
+ "models"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "waivedRules": {
+ "items": {
+ "enum": [
+ "points-limit",
+ "detachments",
+ "detachment-points",
+ "kotc-infantry",
+ "kotc-warlord",
+ "kotc-epic-heroes",
+ "kotc-toughness",
+ "kotc-datasheet-copies"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ }
+ },
+ "required": [
+ "catalogueId",
+ "revision",
+ "limit",
+ "detachment",
+ "disposition",
+ "units"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "reminders": {
+ "items": {
+ "properties": {
+ "ability": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 10000,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 240,
+ "minLength": 1,
+ "type": "string"
+ },
+ "timings": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "moment": {
+ "enum": [
+ "phase-start",
+ "phase-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight"
+ ],
+ "type": "string"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "moment": {
+ "enum": [
+ "turn-start",
+ "turn-end"
+ ],
+ "type": "string"
+ },
+ "phase": {
+ "type": "null"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "moment",
+ "phase",
+ "turn"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "unit": {
+ "properties": {
+ "index": {
+ "maximum": 99,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "index",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "key",
+ "ability",
+ "description",
+ "timings"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "remindersEnabled": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 20000,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "text"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "roster"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "destroyed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "set-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "destroyed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-prep",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "anyOf": [
+ {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "secondaryDeck": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 60,
+ "type": "array"
+ },
+ "secondaryMode": {
+ "enum": [
+ "fixed",
+ "tactical"
+ ],
+ "type": "string"
+ },
+ "stratagems": {
+ "items": {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "detachment": {
+ "maxLength": 249,
+ "minLength": 1,
+ "type": "string"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "limit": {
+ "enum": [
+ "phase",
+ "turn",
+ "battle",
+ "unlimited"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ },
+ "phases": {
+ "items": {
+ "enum": [
+ "command",
+ "movement",
+ "shooting",
+ "charge",
+ "fight",
+ "end"
+ ],
+ "type": "string"
+ },
+ "maxItems": 6,
+ "type": "array"
+ },
+ "turn": {
+ "enum": [
+ "your-turn",
+ "opponent-turn",
+ "either"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name",
+ "cp",
+ "limit"
+ ],
+ "type": "object"
+ },
+ "maxItems": 48,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagems",
+ "secondaries",
+ "primary",
+ "secondaryMode"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "deployed": {
+ "type": "boolean"
+ },
+ "kind": {
+ "const": "deploy-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "deployed"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "formation": {
+ "enum": [
+ "battlefield",
+ "strategic-reserves",
+ "deep-strike",
+ "embarked"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-unit-formation",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "transportKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "formation"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-painted",
+ "type": "string"
+ },
+ "painted": {
+ "type": "boolean"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "painted"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "wound-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "damage-unit",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "unitKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "unitKey",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-deployment",
+ "type": "string"
+ },
+ "patternId": {
+ "anyOf": [
+ {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "patternId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "set-battlefield",
+ "type": "string"
+ },
+ "patternId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "terrainLayoutId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "patternId",
+ "terrainLayoutId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "use-stratagem",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cp": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "use-new-orders",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "secondaryKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "stratagemKey": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "stratagemKey",
+ "secondaryKey",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "score-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "score-settlement",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "round": {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "scores": {
+ "items": {
+ "oneOf": [
+ {
+ "properties": {
+ "category": {
+ "const": "primary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "const": "secondary",
+ "type": "string"
+ },
+ "delta": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "const": "achieved",
+ "type": "string"
+ }
+ },
+ "required": [
+ "category",
+ "key",
+ "delta"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 31,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "scores"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "set-secondary-status",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "achieved",
+ "discarded",
+ "returned"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "key",
+ "status"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondary",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "draw-secondaries",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondaries": {
+ "items": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ },
+ "maxItems": 2,
+ "minItems": 1,
+ "type": "array"
+ },
+ "selected": {
+ "const": true,
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "kind",
+ "secondaries"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-draw",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "acknowledge-scoring",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "select-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "secondary": {
+ "properties": {
+ "awards": {
+ "items": {
+ "properties": {
+ "criteria": {
+ "anyOf": [
+ {
+ "maxLength": 2000,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "cumulative": {
+ "type": "boolean"
+ },
+ "group": {
+ "anyOf": [
+ {
+ "maxLength": 100,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "max": {
+ "anyOf": [
+ {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "mode": {
+ "anyOf": [
+ {
+ "maxLength": 40,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "per": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "trigger": {
+ "properties": {
+ "phase": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "playerTurn": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMax": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "roundMin": {
+ "anyOf": [
+ {
+ "maximum": 5,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "timing": {
+ "anyOf": [
+ {
+ "maxLength": 80,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "timing",
+ "phase",
+ "playerTurn",
+ "roundMin",
+ "roundMax"
+ ],
+ "type": "object"
+ },
+ "vp": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "vp",
+ "per",
+ "mode",
+ "max",
+ "group",
+ "cumulative",
+ "criteria",
+ "trigger"
+ ],
+ "type": "object"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "key": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "name"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "secondary"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reveal-secret",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "attackerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "firstPlayerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "begin-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "firstPlayerId"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "adjust-cp",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "gainCp": {
+ "type": "boolean"
+ },
+ "keys": {
+ "items": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "const": "resolve-tactical-hand",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "category": {
+ "enum": [
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ },
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "score",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "category",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "delta": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "kind": {
+ "const": "correct-player",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "resource": {
+ "enum": [
+ "cp",
+ "primary",
+ "secondary"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "playerId",
+ "resource",
+ "delta"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "settle-opponent-turn",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "request-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "cancel-advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "advance",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "pause-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "resume-clock",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "concededBy": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "end-battle",
+ "type": "string"
+ },
+ "reason": {
+ "enum": [
+ "completed",
+ "finished-early",
+ "conceded"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "reopen-battle",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "kind": {
+ "const": "undo",
+ "type": "string"
+ },
+ "target": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind",
+ "target"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "attach-saved-roster",
+ "type": "string"
+ },
+ "playerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "rosterId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "rosterId"
+ ],
+ "type": "object"
+ }
+]Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, destructive, non-idempotent write. The description adds value beyond them by disclosing the auth scope requirement (mcp:write) and the optimistic-concurrency guard, both material to calling it correctly. It stops short of saying what a seq mismatch returns or whether retries are safe.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with the core action front-loaded and no filler. Nothing is wasted, though the size is arguably too small for the complexity it fronts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool whose command payload is a deeply nested union of dozens of command kinds, no output schema, and zero schema descriptions, this is significantly under-specified. The write mechanics are covered, but an agent gets no help constructing a valid command.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden, yet it only explains expectedSeq (matching the current log). The token parameter and the enormous command discriminated union — the entire substance of the call — receive no semantic explanation at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("appends a legal battle command") plus a scoping condition, which is enough for an agent to identify this as the action-submission tool. It does not explicitly differentiate itself from siblings like create_battle, but the verb+resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one strong precondition (call only when expectedSeq matches the current log), which is genuine usage guidance. However, it names no alternatives and no explicit when-not, leaving the agent to infer how this differs from other battle-mutating tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.