changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "additionalProperties": false,
+ "properties": {
+ "atRiskTypes": {
+ "description": "The stacked-weakness types: at least two members weak to it and nobody resisting or immune. Empty means no such hole.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "defensiveWeaknesses": {
+ "additionalProperties": {
+ "additionalProperties": false,
+ "properties": {
+ "immune": {
+ "description": "How many members are immune to it.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "resist": {
+ "description": "How many members resist it (damage below neutral).",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "weak": {
+ "description": "How many members take super-effective damage from this attacking type.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "weakBy": {
+ "description": "Species names of the members weak to it, in team order; empty when none are.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "weak",
+ "resist",
+ "immune",
+ "weakBy"
+ ],
+ "type": "object"
+ },
+ "description": "One entry for each of the 18 classic types (keyed by type name, e.g. \"Fire\"), tallying how the team fares defensively against that type. A member is counted on its Tera type instead of its own types when a Tera type was supplied.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "offensiveCoverage": {
+ "additionalProperties": false,
+ "description": "Super-effective coverage of all 18 defending types.",
+ "properties": {
+ "coveredBy": {
+ "additionalProperties": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "description": "One entry for each of the 18 classic types (keyed by the defending type), listing the team members that hit it super-effectively from STAB, Tera type, or a supplied move type; an empty array means nobody does.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "note": {
+ "description": "Reminder of which attacking types this coverage was computed from.",
+ "type": "string"
+ },
+ "uncoveredSuperEffectively": {
+ "description": "Defending types no member hits super-effectively.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "coveredBy",
+ "uncoveredSuperEffectively",
+ "note"
+ ],
+ "type": "object"
+ },
+ "score": {
+ "additionalProperties": false,
+ "description": "Transparent heuristic 0-100 scoring of the team.",
+ "properties": {
+ "coverage": {
+ "description": "0-100 share of the 18 types the team hits super-effectively.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "defensive": {
+ "description": "0-100 score penalising stacked weaknesses, floored at 0.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "note": {
+ "description": "What each component means and the reminder that this is a heuristic, not a metagame rating.",
+ "type": "string"
+ },
+ "overall": {
+ "description": "Rounded mean of the component scores, 0-100.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "speed": {
+ "description": "0-100 score dropping 2 points per legal faster threat; present only when `regulation` was supplied.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "overall",
+ "defensive",
+ "coverage",
+ "note"
+ ],
+ "type": "object"
+ },
+ "speed": {
+ "additionalProperties": false,
+ "description": "Where the team sits on the speed spectrum, plus legal faster threats when a regulation was given.",
+ "properties": {
+ "fasterThreatCount": {
+ "description": "How many legal species outspeed the fastest member; present only when `regulation` was supplied.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "fasterThreats": {
+ "description": "Up to 20 of those threats, fastest first, cut off at that limit; present only when `regulation` was supplied — compare with `fasterThreatCount` for the full total.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "baseSpe": {
+ "description": "Its base Speed stat, higher than the team’s fastest.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "species": {
+ "description": "Legal species name.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "species",
+ "baseSpe"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "fastest": {
+ "additionalProperties": false,
+ "description": "The fastest member of the team.",
+ "properties": {
+ "baseSpe": {
+ "description": "Its base Speed stat.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "species": {
+ "description": "Species name of the team’s fastest member by base Speed.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "species",
+ "baseSpe"
+ ],
+ "type": "object"
+ },
+ "note": {
+ "description": "Caveat that threats are base-speed comparisons only; present only when `regulation` was supplied.",
+ "type": "string"
+ },
+ "regulation": {
+ "description": "Display name of the regulation that was checked; present only when `regulation` was supplied.",
+ "type": "string"
+ },
+ "slowest": {
+ "additionalProperties": false,
+ "description": "The slowest member of the team.",
+ "properties": {
+ "baseSpe": {
+ "description": "Its base Speed stat.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "species": {
+ "description": "Species name of the team’s slowest member by base Speed.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "species",
+ "baseSpe"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "fastest",
+ "slowest"
+ ],
+ "type": "object"
+ },
+ "team": {
+ "description": "The analysed team in the order it was supplied, each member with the typing actually used for the analysis.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "baseSpe": {
+ "description": "Base Speed stat of the species, used for the speed placement below.",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "moveTypes": {
+ "description": "Types of the supplied moves that were recognised, e.g. [\"Dark\"]; unrecognised move names are left out here and listed in `unknownMoves`.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "species": {
+ "description": "Resolved species name, e.g. \"Great Tusk\".",
+ "type": "string"
+ },
+ "teraType": {
+ "description": "Tera type supplied for this member; when set it replaces the member’s typing defensively and is added to its attacking types. Absent when none was given.",
+ "type": "string"
+ },
+ "types": {
+ "description": "The species’ types as the dataset defines them, e.g. [\"Ground\", \"Fighting\"].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "species",
+ "types",
+ "baseSpe",
+ "moveTypes"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "unknownMoves": {
+ "description": "Deduplicated move names that were not found in the dataset and so contributed no coverage; omitted entirely when every move resolved.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "team",
+ "defensiveWeaknesses",
+ "atRiskTypes",
+ "offensiveCoverage",
+ "speed",
+ "score"
+ ],
+ "type": "object"
+}