2024-05-25 21:51:37 +00:00
{
"$schema" : "https://json-schema.org/draft/2020-12/schema" ,
2024-05-26 19:45:26 +00:00
"$id" : "/quest/1.0" ,
2024-05-25 21:51:37 +00:00
"title" : "Questionable V1" ,
"description" : "A series of quest sequences" ,
"type" : "object" ,
"properties" : {
"Version" : {
"description" : "Version of the schema" ,
"type" : "integer" ,
"minimum" : 1 ,
"maximum" : 1
} ,
"Author" : {
"description" : "Author of the quest sequence" ,
"type" : "string"
} ,
"Contributors" : {
"type" : "array" ,
"items" : {
"type" : "string"
}
} ,
"Comment" : {
"type" : "string"
} ,
"TerritoryBlacklist" : {
"type" : "array" ,
"items" : {
"type" : "integer"
}
} ,
"QuestSequence" : {
"type" : "array" ,
"items" : {
"type" : "object" ,
"properties" : {
"Sequence" : {
"type" : "integer" ,
"minimum" : 0 ,
"maximum" : 255
} ,
"Steps" : {
"type" : "array" ,
"items" : {
"type" : "object" ,
"properties" : {
"DataId" : {
"type" : "integer" ,
2024-05-27 19:54:34 +00:00
"description" : "The data id of the NPC/Object/Aetheryte/Aether Current" ,
2024-05-25 21:51:37 +00:00
"exclusiveMinimum" : 0
} ,
"Position" : {
"type" : "object" ,
2024-05-27 19:54:34 +00:00
"description" : "Position to (typically) walk to" ,
2024-05-25 21:51:37 +00:00
"properties" : {
"X" : {
"type" : "number"
} ,
"Y" : {
"type" : "number"
} ,
"Z" : {
"type" : "number"
}
} ,
"required" : [
"X" ,
"Y" ,
"Z"
]
} ,
2024-05-26 19:45:26 +00:00
"StopDistance" : {
2024-05-30 21:38:50 +00:00
"type" : [
"number" ,
"null"
] ,
2024-05-27 19:54:34 +00:00
"description" : "Set if pathfinding should stop closer or further away from the default stop distance" ,
2024-05-26 19:45:26 +00:00
"exclusiveMinimum" : 0
} ,
2024-05-25 21:51:37 +00:00
"TerritoryId" : {
"type" : "integer" ,
2024-05-27 19:54:34 +00:00
"description" : "The territory id associated with the location" ,
2024-05-25 21:51:37 +00:00
"exclusiveMinimum" : 0
} ,
2024-05-28 20:24:06 +00:00
"TargetTerritoryId" : {
"type" : "integer" ,
"description" : "If set, this step is complete (movement-wise) if this territory id is reached" ,
"exclusiveMinimum" : 0
} ,
2024-05-25 21:51:37 +00:00
"InteractionType" : {
"type" : "string" ,
2024-05-27 19:54:34 +00:00
"description" : "What to do at the position" ,
2024-05-25 21:51:37 +00:00
"enum" : [
"Interact" ,
2024-05-26 13:43:33 +00:00
"WalkTo" ,
2024-05-27 19:54:34 +00:00
"AttuneAethernetShard" ,
2024-05-25 21:51:37 +00:00
"AttuneAetheryte" ,
2024-05-26 13:43:33 +00:00
"AttuneAetherCurrent" ,
2024-05-25 21:51:37 +00:00
"Combat" ,
"UseItem" ,
2024-05-28 22:17:19 +00:00
"Say" ,
2024-05-25 21:51:37 +00:00
"Emote" ,
2024-05-27 19:54:34 +00:00
"WaitForNpcAtPosition" ,
2024-05-31 23:49:11 +00:00
"WaitForManualProgress" ,
"Duty" ,
"SinglePlayerDuty" ,
2024-06-01 12:30:20 +00:00
"Jump" ,
2024-06-01 16:46:57 +00:00
"CutsceneSelectString" ,
2024-05-31 23:49:11 +00:00
"ShouldBeAJump" ,
"Instruction"
2024-05-25 21:51:37 +00:00
]
} ,
"Disabled" : {
2024-05-29 19:22:58 +00:00
"description" : "Whether this step is disabled (see SkipIf for more control)" ,
2024-05-27 19:54:34 +00:00
"type" : "boolean"
} ,
"DisableNavmesh" : {
"description" : "If true, will go to the position in a straight line instead of using pathfinding" ,
2024-05-25 21:51:37 +00:00
"type" : "boolean"
} ,
2024-05-27 19:54:34 +00:00
"Mount" : {
2024-05-30 21:38:50 +00:00
"type" : [
"boolean" ,
"null"
] ,
2024-05-27 19:54:34 +00:00
"description" : "If true, will mount regardless of distance to position. If false, will unmount."
} ,
2024-05-27 21:51:11 +00:00
"Fly" : {
"type" : "boolean" ,
"description" : "If true and flying is unlocked in a zone, will use a flight path"
} ,
2024-06-01 16:46:57 +00:00
"Sprint" : {
"type" : [
"boolean" ,
"null"
]
} ,
2024-05-26 19:45:26 +00:00
"AetheryteShortcut" : {
"type" : "string" ,
2024-05-27 19:54:34 +00:00
"description" : "The Aetheryte to teleport to (before moving)" ,
2024-05-26 19:45:26 +00:00
"enum" : [
"Gridania" ,
2024-05-30 21:38:50 +00:00
"Central Shroud - Bentbranch Meadows" ,
"East Shroud - Hawthorne Hut" ,
"South Shroud - Quarrymill" ,
"South Shroud - Camp Tranquil" ,
"North Shroud - Fallgourd Float" ,
2024-05-26 19:45:26 +00:00
"Ul'dah" ,
2024-05-30 21:38:50 +00:00
"Western Thanalan - Horizon" ,
"Central Thanalan - Black Brush Station" ,
"Eastern Thanalan - Camp Drybone" ,
"Southern Thanalan - Little Ala Mhigo" ,
"Southern Thanalan - Forgotten Springs" ,
"Northern Thanalan - Camp Bluefog" ,
"Northern Thanalan - Ceruleum Processing Plant" ,
"Limsa Lominsa" ,
"Middle La Noscea - Summerford Farms" ,
"Lower La Noscea - Moraby Drydocks" ,
"Eastern La Noscea - Costa Del Sol" ,
"Eastern La Noscea - Wineport" ,
"Western La Noscea - Swiftperch" ,
"Western La Noscea - Aleport" ,
"Upper La Noscea - Camp Bronze Lake" ,
"Outer La Noscea - Camp Overlook" ,
"Coerthas Central Highlands - Camp Dragonhead" ,
"Mor Dhona" ,
"Gold Saucer" ,
"Wolves' Den Pier" ,
2024-05-26 19:45:26 +00:00
"Ishgard" ,
2024-05-27 19:54:34 +00:00
"Idyllshire" ,
2024-05-30 21:38:50 +00:00
"Coerthas Western Highlands - Falcon's Nest" ,
"The Sea of Clouds - Camp Cloudtop" ,
"The Sea of Clouds - Ok' Zundu" ,
"Azys Lla - Helix" ,
"The Dravanian Forelands - Tailfeather" ,
"The Dravanian Forelands - Anyx Trine" ,
"The Churning Mists - Moghome" ,
"The Churning Mists - Zenith" ,
2024-05-26 19:45:26 +00:00
"Rhalgr's Reach" ,
"Fringes - Castrum Oriens" ,
"Fringes - Peering Stones" ,
"Peaks - Ala Gannha" ,
"Peaks - Ala Ghiri" ,
"Lochs - Porta Praetoria" ,
"Lochs - Ala Mhigan Quarter" ,
"Kugane" ,
"Ruby Sea - Tamamizu" ,
"Ruby Sea - Onokoro" ,
"Yanxia - Namai" ,
"Yanxia - House of the Fierce" ,
"Azim Steppe - Reunion" ,
"Azim Steppe - Dawn Throne" ,
"Azim Steppe - Dhoro Iloh" ,
"Doman Enclave" ,
"Crystarium" ,
"Eulmore" ,
"Lakeland - Fort Jobb" ,
"Lakeland - Ostall Imperative" ,
"Kholusia - Stilltide" ,
"Kholusia - Wright" ,
"Kholusia - Tomra" ,
"Amh Araeng - Mord Souq" ,
"Amh Araeng - Inn at Journey's Head" ,
"Amh Araeng - Twine" ,
"Rak'tika - Slitherbough" ,
"Rak'tika - Fanow" ,
"Il Mheg - Lydha Lran" ,
"Il Mheg - Pia Enni" ,
"Il Mheg - Wolekdorf" ,
"Tempest - Ondo Cups" ,
"Tempest - Macarenses Angle" ,
"Old Sharlayan" ,
"Radz-at-Han" ,
"Labyrinthos - Archeion" ,
"Labyrinthos - Sharlayan Hamlet" ,
"Labyrinthos - Aporia" ,
"Thavnair - Yedlihmad" ,
"Thavnair - Great Work" ,
"Thavnair - Palaka's Stand" ,
"Garlemald - Camp Broken Glass" ,
"Garlemald - Tertium" ,
"Mare Lamentorum - Sinus Lacrimarum" ,
"Mare Lamentorum - Bestways Burrow" ,
"Elpis - Anagnorisis" ,
"Elpis - Twelve Wonders" ,
"Elpis - Poieten Oikos" ,
"Ultima Thule - Reah Tahra" ,
2024-05-27 19:54:34 +00:00
"Ultima Thule - Abode of the Ea" ,
2024-05-26 19:45:26 +00:00
"Ultima Thule - Base Omicron"
]
} ,
2024-05-25 21:51:37 +00:00
"AethernetShortcut" : {
"type" : "array" ,
2024-05-27 19:54:34 +00:00
"description" : "A pair of aethernet locations (from + to) to use as a shortcut" ,
2024-05-30 21:38:50 +00:00
"minItems" : 1 ,
2024-05-25 21:51:37 +00:00
"maxItems" : 2 ,
"items" : {
"type" : "string" ,
"enum" : [
2024-05-26 13:43:33 +00:00
"[Gridania] Aetheryte Plaza" ,
"[Gridania] Archer's Guild" ,
2024-05-27 19:54:34 +00:00
"[Gridania] Leatherworker's Guild & Shaded Bower" ,
2024-05-26 13:43:33 +00:00
"[Gridania] Lancer's Guild" ,
"[Gridania] Conjurer's Guild" ,
"[Gridania] Botanist's Guild" ,
"[Gridania] Mih Khetto's Amphitheatre" ,
2024-05-30 21:38:50 +00:00
"[Gridania] Blue Badger Gate (Central Shroud)" ,
"[Gridania] Yellow Serpent Gate (North Shroud)" ,
"[Gridania] White Wolf Gate (Central Shroud)" ,
2024-05-26 13:43:33 +00:00
"[Gridania] Airship Landing" ,
"[Ul'dah] Aetheryte Plaza" ,
"[Ul'dah] Adventurer's Guild" ,
"[Ul'dah] Thaumaturge's Guild" ,
"[Ul'dah] Gladiator's Guild" ,
"[Ul'dah] Miner's Guild" ,
"[Ul'dah] Weavers' Guild" ,
"[Ul'dah] Goldsmiths' Guild" ,
"[Ul'dah] Sapphire Avenue Exchange" ,
"[Ul'dah] Alchemists' Guild" ,
2024-05-30 21:38:50 +00:00
"[Ul'dah] Gate of the Sultana (Western Thanalan)" ,
"[Ul'dah] Gate of Nald (Central Thanalan)" ,
"[Ul'dah] Gate of Thal (Central Thanalan)" ,
2024-05-26 13:43:33 +00:00
"[Ul'dah] The Chamber of Rule" ,
"[Ul'dah] Airship Landing" ,
2024-05-30 21:38:50 +00:00
"[Limsa Lominsa] Aetheryte Plaza" ,
"[Limsa Lominsa] Arcanist's Guild" ,
"[Limsa Lominsa] Fishermen's Guild" ,
"[Limsa Lominsa] Hawker's Alley" ,
"[Limsa Lominsa] The Aftcastle" ,
"[Limsa Lominsa] Culinarian's Guild" ,
"[Limsa Lominsa] Marauder's Guild" ,
"[Limsa Lominsa] Zephyr Gate (Middle La Noscea)" ,
"[Limsa Lominsa] Tempest Gate (Lower La Noscea)" ,
"[Limsa Lominsa] Airship Landing" ,
2024-05-26 13:43:33 +00:00
"[Ishgard] Aetheryte Plaza" ,
"[Ishgard] The Forgotten Knight" ,
"[Ishgard] Skysteel Manufactory" ,
"[Ishgard] The Brume" ,
"[Ishgard] Athenaeum Astrologicum" ,
"[Ishgard] The Jeweled Crozier" ,
"[Ishgard] Saint Reymanaud's Cathedral" ,
"[Ishgard] The Tribunal" ,
"[Ishgard] The Last Vigil" ,
2024-05-30 21:38:50 +00:00
"[Ishgard] The Gates of Judgement (Coerthas Central Highlands)" ,
2024-05-26 13:43:33 +00:00
"[Idyllshire] Aetheryte Plaza" ,
"[Idyllshire] West Idyllshire" ,
2024-05-30 21:38:50 +00:00
"[Idyllshire] Prologue Gate" ,
"[Idyllshire] Epilogue Gate" ,
2024-05-26 13:43:33 +00:00
"[Rhalgr's Reach] Aetheryte Plaza" ,
"[Rhalgr's Reach] Western Rhalgr's Reach" ,
"[Rhalgr's Reach] Northeastern Rhalgr's Reach" ,
2024-05-30 21:38:50 +00:00
"[Rhalgr's Reach] Fringes Gate" ,
"[Rhalgr's Reach] Peaks Gate" ,
2024-05-26 13:43:33 +00:00
"[Kugane] Aetheryte Plaza" ,
"[Kugane] Shiokaze Hostelry" ,
"[Kugane] Pier #1" ,
"[Kugane] Thavnairian Consulate" ,
"[Kugane] Kogane Dori Markets" ,
"[Kugane] Bokairo Inn" ,
"[Kugane] The Ruby Bazaar" ,
"[Kugane] Sekiseigumi Barracks" ,
"[Kugane] Rakuza District" ,
2024-05-30 21:38:50 +00:00
"[Kugane] The Ruby Price" ,
2024-05-26 13:43:33 +00:00
"[Kugane] Airship Landing" ,
2024-05-26 19:45:26 +00:00
"[Crystarium] Aetheryte Plaza" ,
"[Crystarium] Musica Universalis Markets" ,
"[Crystarium] Themenos Rookery" ,
"[Crystarium] The Dossal Gate" ,
"[Crystarium] The Pendants" ,
"[Crystarium] The Amaro Launch" ,
"[Crystarium] The Crystalline Mean" ,
"[Crystarium] The Cabinet of Curiosity" ,
2024-05-30 21:38:50 +00:00
"[Crystarium] Tessellation (Lakeland)" ,
2024-05-25 21:51:37 +00:00
"[Eulmore] Aetheryte Plaza" ,
"[Eulmore] Southeast Derelicts" ,
"[Eulmore] Nightsoil Pots" ,
"[Eulmore] The Glory Gate" ,
"[Eulmore] The Mainstay" ,
2024-05-30 21:38:50 +00:00
"[Eulmore] The Path to Glory (Kholusia)" ,
2024-05-25 21:51:37 +00:00
"[Old Sharlayan] Aetheryte Plaza" ,
"[Old Sharlayan] The Studium" ,
"[Old Sharlayan] The Baldesion Annex" ,
"[Old Sharlayan] The Rostra" ,
"[Old Sharlayan] The Leveilleur Estate" ,
"[Old Sharlayan] Journey's End" ,
"[Old Sharlayan] Scholar's Harbor" ,
2024-05-30 21:38:50 +00:00
"[Old Sharlayan] The Hall of Artifice (Labyrinthos)" ,
2024-05-25 21:51:37 +00:00
"[Radz-at-Han] Aetheryte Plaza" ,
"[Radz-at-Han] Meghaduta" ,
"[Radz-at-Han] Ruveydah Fibers" ,
"[Radz-at-Han] Airship Landing" ,
"[Radz-at-Han] Alzadaal's Peace" ,
"[Radz-at-Han] Hall of the Radiant Host" ,
"[Radz-at-Han] Mehryde's Meyhane" ,
"[Radz-at-Han] Kama" ,
2024-05-30 21:38:50 +00:00
"[Radz-at-Han] The High Crucible of Al-Kimiya" ,
"[Radz-at-Han] The Gate of First Sight (Thavnair)"
2024-05-25 21:51:37 +00:00
]
}
} ,
2024-05-27 19:54:34 +00:00
"AetherCurrentId" : {
"type" : "number" ,
"description" : "The aether current id, used to check if a given aetheryte is unlocked"
} ,
2024-05-26 19:45:26 +00:00
"EnemySpawnType" : {
"type" : "string" ,
2024-05-27 19:54:34 +00:00
"description" : "Determines how enemy spawning is handled in combat locations" ,
2024-05-26 19:45:26 +00:00
"enum" : [
"AutoOnEnterArea" ,
2024-05-30 21:38:50 +00:00
"AfterInteraction" ,
2024-05-31 23:49:11 +00:00
"AfterItemUse" ,
"OverworldEnemies"
2024-05-26 19:45:26 +00:00
]
} ,
2024-05-25 21:51:37 +00:00
"KillEnemyDataIds" : {
2024-05-27 19:54:34 +00:00
"description" : "The enemy data ids which are supposed to be killed" ,
2024-05-25 21:51:37 +00:00
"type" : "array" ,
"items" : {
"type" : "integer"
}
} ,
"Emote" : {
"type" : "string" ,
2024-05-27 19:54:34 +00:00
"description" : "The emote to use" ,
2024-05-25 21:51:37 +00:00
"enum" : [
"stretch" ,
"wave" ,
2024-05-26 13:43:33 +00:00
"rally" ,
2024-05-29 19:22:58 +00:00
"deny" ,
"pray"
2024-05-25 21:51:37 +00:00
]
} ,
2024-05-28 22:17:19 +00:00
"ChatMessage" : {
"type" : "string" ,
"description" : "The text to use with /say"
} ,
2024-05-27 19:54:34 +00:00
"ItemId" : {
2024-05-30 21:38:50 +00:00
"type" : [
"number" ,
"null"
] ,
2024-05-27 19:54:34 +00:00
"description" : "The Item to use" ,
"exclusiveMinimum" : 0
} ,
2024-06-01 12:30:20 +00:00
"JumpDestination" : {
"type" : "object" ,
"properties" : {
"Position" : {
"type" : "object" ,
"description" : "Position to try reaching after the jump" ,
"properties" : {
"X" : {
"type" : "number"
} ,
"Y" : {
"type" : "number"
} ,
"Z" : {
"type" : "number"
}
} ,
"required" : [
"X" ,
"Y" ,
"Z"
]
} ,
"StopDistance" : {
"type" : [
"number" ,
"null"
] ,
"description" : "Set if pathfinding should stop closer or further away from the default stop distance" ,
"exclusiveMinimum" : 0
} ,
"DelaySeconds" : {
"type" : [
"number" ,
"null"
]
}
} ,
"required" : [
"Position"
]
} ,
"ContentFinderConditionId" : {
2024-06-01 16:46:57 +00:00
"type" : "integer" ,
2024-06-01 12:30:20 +00:00
"exclusiveMinimum" : 0
} ,
2024-05-25 21:51:37 +00:00
"SkipIf" : {
"type" : "array" ,
2024-05-27 19:54:34 +00:00
"description" : "TODO Not implemented" ,
2024-05-25 21:51:37 +00:00
"items" : {
"type" : "string" ,
"enum" : [
2024-06-01 16:46:57 +00:00
"Never" ,
2024-05-25 21:51:37 +00:00
"FlyingUnlocked"
]
}
} ,
2024-06-01 16:46:57 +00:00
"CompletionQuestVariablesFlags" : {
"type" : "array" ,
"description" : "Quest Variables that dictate whether or not this step is skipped: null is don't check, positive values need to be set, negative values need to be unset" ,
"items" : {
"type" : [
"integer" ,
"null"
] ,
"enum" : [
null ,
1 ,
2 ,
4 ,
8 ,
16 ,
32 ,
64 ,
128 ,
-1 ,
-2 ,
-4 ,
-8 ,
-16 ,
-32 ,
-64 ,
-128
]
} ,
"minItems" : 6 ,
"maxItems" : 6
} ,
"DialogueChoices" : {
"type" : "array" ,
"items" : {
"type" : "object" ,
"properties" : {
"ExcelSheet" : {
"type" : "string"
} ,
"Answer" : {
"type" : "string"
}
} ,
"required" : [
"ExcelSheet" ,
"Answer"
]
}
} ,
2024-05-25 21:51:37 +00:00
"Comment" : {
"type" : "string"
}
} ,
"required" : [
"TerritoryId" ,
"InteractionType"
]
}
} ,
"Comment" : {
"type" : "string"
}
} ,
"required" : [
"Sequence"
]
}
}
} ,
"required" : [
"Version" ,
"Author"
]
}