{
  "$id": "https://example.com/product.schema.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "description": "Schema for a Monster",
  "properties": {
    "creatureStatistics": {
      "additionalProperties": false,
      "properties": {
        "attack": {
          "minimum": 0,
          "type": "integer"
        },
        "attackSlowness": {
          "minimum": 0,
          "type": "integer"
        },
        "defense": {
          "minimum": 0,
          "type": "integer"
        },
        "health": {
          "minimum": 0,
          "type": "integer"
        },
        "mana": {
          "minimum": 0,
          "type": "integer"
        },
        "maxHealth": {
          "minimum": 0,
          "type": "integer"
        },
        "maxMana": {
          "minimum": 0,
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "outfit": {
          "additionalProperties": false,
          "properties": {
            "details": {
              "additionalProperties": false,
              "properties": {
                "body": {
                  "maximum": 133,
                  "minimum": 0,
                  "type": "integer"
                },
                "feet": {
                  "maximum": 133,
                  "minimum": 0,
                  "type": "integer"
                },
                "head": {
                  "maximum": 133,
                  "minimum": 0,
                  "type": "integer"
                },
                "legs": {
                  "maximum": 133,
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "required": [
                "head",
                "body",
                "legs",
                "feet"
              ],
              "type": "object"
            },
            "id": {
              "minimum": 0,
              "type": "integer"
            }
          },
          "required": [
            "id"
          ],
          "type": "object"
        },
        "speed": {
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "name",
        "health",
        "maxHealth",
        "mana",
        "maxMana",
        "attack",
        "attackSlowness",
        "defense",
        "speed",
        "outfit"
      ],
      "type": "object"
    },
    "farewells": {
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "type": "array"
    },
    "greetings": {
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "type": "array"
    },
    "hearingRange": {
      "description": "The hearing range of the NPC",
      "minimum": 0,
      "type": "integer"
    },
    "sayings": {
      "additionalProperties": false,
      "description": "Sayings of the NPC",
      "properties": {
        "chance": {
          "description": "Chance of sayings of the NPC",
          "maximum": 1,
          "minimum": 0,
          "type": "number"
        },
        "slowness": {
          "description": "Slowness of sayings of the NPC",
          "minimum": 0,
          "type": "integer"
        },
        "texts": {
          "description": "Array of random sayings of the NPC",
          "minItems": 1,
          "type": "array"
        }
      },
      "required": [
        "texts",
        "slowness",
        "chance"
      ],
      "type": "object"
    },
    "script": {
      "type": "string"
    },
    "trade": {
      "description": "The trade items of the NPC",
      "items": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "description": "The count of the traded thing",
            "minimum": 0,
            "type": "integer"
          },
          "id": {
            "description": "The identifier of the trade thing",
            "minimum": 0,
            "type": "integer"
          },
          "name": {
            "description": "The name of the trade thing",
            "type": "string"
          },
          "price": {
            "description": "The price of the trade thing",
            "minimum": 0,
            "type": "integer"
          },
          "type": {
            "description": "The type of the trade thing (buy/sell)",
            "type": "string"
          }
        },
        "required": [
          "name",
          "price",
          "id",
          "type"
        ],
        "type": "object"
      },
      "minItems": 0,
      "type": "array"
    },
    "wanderRange": {
      "description": "The wandering range of the NPC",
      "minimum": 0,
      "type": "integer"
    }
  },
  "required": [
    "hearingRange",
    "wanderRange"
  ],
  "title": "Monster",
  "type": "object"
}