{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
  "title": "Gathering Location V1",
  "description": "A series of gathering locationsk",
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string",
      "const": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json"
    },
    "Author": {
      "description": "Author of the gathering location data",
      "type": [
        "string",
        "array"
      ],
      "items": {
        "type": "string"
      }
    },
    "Steps": {
      "type": "array",
      "items": {
        "$ref": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json#/$defs/Step"
      },
      "minItems": 1
    },
    "FlyBetweenNodes": {
      "description": "If nodes are close enough together, flying makes no sense due to the pathfinding overhead",
      "type": "boolean",
      "default": true
    },
    "Groups": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "Nodes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "DataId": {
                  "type": "number",
                  "minimum": 30000,
                  "maximum": 50000
                },
                "Fly": {
                  "type": "boolean"
                },
                "Locations": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Position": {
                        "$ref": "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Vector3"
                      },
                      "MinimumAngle": {
                        "type": "number",
                        "minimum": -360,
                        "maximum": 360
                      },
                      "MaximumAngle": {
                        "type": "number",
                        "minimum": -360,
                        "maximum": 360
                      },
                      "MinimumDistance": {
                        "type": "number",
                        "minimum": 0
                      },
                      "MaximumDistance": {
                        "type": "number",
                        "exclusiveMinimum": 0
                      }
                    },
                    "required": [
                      "Position"
                    ],
                    "additionalProperties": false
                  }
                }
              },
              "required": [
                "DataId"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "Nodes"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "$schema",
    "Author",
    "Steps",
    "Groups"
  ],
  "additionalProperties": false
}