2024-05-25 21:51:37 +00:00
{
"$schema" : "https://json-schema.org/draft/2020-12/schema" ,
2024-07-26 23:32:17 +00:00
"$id" : "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json" ,
2024-05-25 21:51:37 +00:00
"title" : "Questionable V1" ,
"description" : "A series of quest sequences" ,
"type" : "object" ,
"properties" : {
2024-07-14 10:39:02 +00:00
"$schema" : {
"type" : "string" ,
2024-07-26 23:32:17 +00:00
"const" : "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json"
2024-07-14 10:39:02 +00:00
} ,
2024-05-25 21:51:37 +00:00
"Author" : {
"description" : "Author of the quest sequence" ,
2024-07-21 00:06:33 +00:00
"type" : [
"string" ,
"array"
] ,
2024-05-25 21:51:37 +00:00
"items" : {
"type" : "string"
}
} ,
2024-07-15 21:09:09 +00:00
"Disabled" : {
"type" : "boolean"
} ,
2024-05-25 21:51:37 +00:00
"Comment" : {
"type" : "string"
} ,
2024-07-14 10:44:31 +00:00
"$" : {
"type" : "string" ,
"description" : "Dev Comment (not visible in-game)"
} ,
2024-05-25 21:51:37 +00:00
"QuestSequence" : {
"type" : "array" ,
"items" : {
"type" : "object" ,
"properties" : {
"Sequence" : {
"type" : "integer" ,
"minimum" : 0 ,
"maximum" : 255
} ,
"Steps" : {
"type" : "array" ,
"items" : {
2024-08-15 23:21:15 +00:00
"$ref" : "#/$defs/Step"
}
} ,
"Comment" : {
"type" : "string"
}
} ,
"required" : [
"Sequence"
] ,
"additionalProperties" : false
}
}
} ,
"required" : [
"$schema" ,
"QuestSequence" ,
"Author"
] ,
"additionalProperties" : false ,
"$defs" : {
"Step" : {
"type" : "object" ,
"properties" : {
"DataId" : {
"type" : "integer" ,
"description" : "The data id of the NPC/Object/Aetheryte/Aether Current" ,
"exclusiveMinimum" : 0
} ,
"Position" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Vector3"
} ,
"StopDistance" : {
"type" : [
"number" ,
"null"
] ,
"description" : "Set if pathfinding should stop closer or further away from the default stop distance" ,
"exclusiveMinimum" : 0
} ,
"IgnoreDistanceToObject" : {
"type" : "boolean" ,
"description" : "Most interactions with objects are checked for a Y (height) difference of 2 in-game units. If set to true, the game won't attempt to get any closer if the height difference is larger than this."
} ,
2024-08-29 13:45:16 +00:00
"RestartNavigationIfCancelled" : {
"type" : "boolean" ,
"description" : "For some specific loading screen transitions (e.g. when entering/leaving the water through the portals in the ruby sea), setting this to 'false' means it won't re-attempt to move to the portal after the loading animation"
} ,
2024-08-15 23:21:15 +00:00
"TerritoryId" : {
"type" : "integer" ,
"description" : "The territory id associated with the location" ,
"exclusiveMinimum" : 0
} ,
"TargetTerritoryId" : {
"type" : "integer" ,
"description" : "If set, this step is complete (movement-wise) if this territory id is reached" ,
"exclusiveMinimum" : 0
} ,
"InteractionType" : {
"type" : "string" ,
"description" : "What to do at the position" ,
"enum" : [
"None" ,
"Interact" ,
"WalkTo" ,
"AttuneAethernetShard" ,
"AttuneAetheryte" ,
"AttuneAetherCurrent" ,
"Combat" ,
"UseItem" ,
"EquipItem" ,
2024-09-22 12:31:14 +00:00
"PurchaseItem" ,
2024-08-15 23:21:15 +00:00
"EquipRecommended" ,
"Say" ,
"Emote" ,
"Action" ,
2024-10-19 15:24:21 +00:00
"StatusOff" ,
2024-08-15 23:21:15 +00:00
"WaitForNpcAtPosition" ,
"WaitForManualProgress" ,
"Duty" ,
"SinglePlayerDuty" ,
"Jump" ,
"Dive" ,
2024-08-16 18:42:11 +00:00
"Craft" ,
2024-09-16 18:22:12 +00:00
"Gather" ,
2024-09-11 14:58:07 +00:00
"Snipe" ,
2024-11-11 21:38:20 +00:00
"SwitchClass" ,
2024-08-15 23:21:15 +00:00
"Instruction" ,
"AcceptQuest" ,
"CompleteQuest" ,
"InitiateLeve"
]
} ,
"Disabled" : {
"description" : "Whether this step is disabled (see SkipIf for more control)" ,
"type" : "boolean"
} ,
"DisableNavmesh" : {
"description" : "If true, will go to the position in a straight line instead of using pathfinding" ,
"type" : "boolean"
} ,
"Mount" : {
"type" : [
"boolean" ,
"null"
] ,
"description" : "If true, will mount regardless of distance to position. If false, will unmount."
} ,
"Fly" : {
"type" : "boolean" ,
"description" : "If true and flying is unlocked in a zone, will use a flight path"
} ,
"Land" : {
"type" : "boolean" ,
"description" : "If true and flying, will attempt to land on the ground"
} ,
"Sprint" : {
"type" : [
"boolean" ,
"null"
]
} ,
"AetheryteShortcut" : {
"description" : "The Aetheryte to teleport to (before moving)" ,
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Aetheryte"
} ,
"AethernetShortcut" : {
"type" : "array" ,
"description" : "A pair of aethernet locations (from + to) to use as a shortcut" ,
"minItems" : 2 ,
"maxItems" : 2 ,
"items" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/AethernetShard"
}
} ,
"ItemId" : {
"type" : [
"number" ,
"null"
] ,
"description" : "The Item to use" ,
"exclusiveMinimum" : 0
} ,
"SkipConditions" : {
"type" : "object" ,
"properties" : {
"StepIf" : {
2024-05-25 21:51:37 +00:00
"type" : "object" ,
"properties" : {
2024-08-15 23:21:15 +00:00
"Never" : {
"type" : "boolean"
2024-05-25 21:51:37 +00:00
} ,
2024-08-15 23:21:15 +00:00
"CompletionQuestVariablesFlags" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/CompletionFlags"
2024-05-28 20:24:06 +00:00
} ,
2024-08-15 23:21:15 +00:00
"Flying" : {
2024-05-25 21:51:37 +00:00
"type" : "string" ,
"enum" : [
2024-08-15 23:21:15 +00:00
"Locked" ,
"Unlocked"
2024-05-25 21:51:37 +00:00
]
} ,
2024-08-15 23:21:15 +00:00
"Chocobo" : {
"type" : "string" ,
"enum" : [
"Locked" ,
"Unlocked"
]
2024-05-27 19:54:34 +00:00
} ,
2024-12-03 13:00:20 +00:00
"Diving" : {
"type" : [ "boolean" , "null" ]
} ,
2024-08-15 23:21:15 +00:00
"NotTargetable" : {
2024-05-25 21:51:37 +00:00
"type" : "boolean"
} ,
2024-08-15 23:21:15 +00:00
"InTerritory" : {
"type" : "array" ,
"items" : {
"type" : "integer"
}
2024-05-27 21:51:11 +00:00
} ,
2024-08-15 23:21:15 +00:00
"NotInTerritory" : {
"type" : "array" ,
"items" : {
"type" : "integer"
}
2024-07-12 21:58:48 +00:00
} ,
2024-08-15 23:21:15 +00:00
"Item" : {
"type" : "object" ,
"properties" : {
"NotInInventory" : {
"type" : "boolean"
}
}
2024-06-01 16:46:57 +00:00
} ,
2024-08-15 23:21:15 +00:00
"QuestsAccepted" : {
"type" : "array" ,
"items" : {
2024-09-16 18:22:12 +00:00
"type" : [
"number" ,
"string"
]
2024-08-15 23:21:15 +00:00
}
2024-05-26 19:45:26 +00:00
} ,
2024-08-15 23:21:15 +00:00
"QuestsCompleted" : {
2024-05-25 21:51:37 +00:00
"type" : "array" ,
"items" : {
2024-09-16 18:22:12 +00:00
"type" : [
"number" ,
"string"
]
2024-05-25 21:51:37 +00:00
}
} ,
2024-09-23 00:00:32 +00:00
"NotNamePlateIconId" : {
"type" : "array" ,
"items" : {
"type" : "integer"
}
} ,
2024-08-15 23:21:15 +00:00
"AetheryteLocked" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Aetheryte"
2024-05-27 19:54:34 +00:00
} ,
2024-08-15 23:21:15 +00:00
"AetheryteUnlocked" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Aetheryte"
} ,
"NearPosition" : {
2024-07-27 13:39:47 +00:00
"type" : "object" ,
"properties" : {
2024-08-15 23:21:15 +00:00
"Position" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Vector3"
2024-07-27 22:13:52 +00:00
} ,
2024-08-15 23:21:15 +00:00
"MaximumDistance" : {
"type" : "number"
2024-09-02 19:36:34 +00:00
} ,
"TerritoryId" : {
"type" : "number"
2024-07-27 13:39:47 +00:00
}
} ,
2024-08-15 23:21:15 +00:00
"required" : [
"Position" ,
2024-09-02 19:36:34 +00:00
"MaximumDistance" ,
"TerritoryId"
2024-08-15 23:21:15 +00:00
] ,
2024-07-27 13:39:47 +00:00
"additionalProperties" : false
2024-05-25 21:51:37 +00:00
} ,
2024-08-15 23:21:15 +00:00
"ExtraCondition" : {
"type" : "string" ,
"enum" : [
"WakingSandsMainArea" ,
2024-10-19 08:31:27 +00:00
"RisingStonesSolar" ,
"RoguesGuild" ,
"DockStorehouse"
2024-08-15 23:21:15 +00:00
]
}
} ,
"additionalProperties" : false
} ,
"AetheryteShortcutIf" : {
"type" : "object" ,
"properties" : {
"Never" : {
"type" : "boolean"
2024-06-01 16:46:57 +00:00
} ,
2024-08-15 23:21:15 +00:00
"InSameTerritory" : {
"type" : "boolean"
2024-07-20 17:09:51 +00:00
} ,
2024-08-15 23:21:15 +00:00
"InTerritory" : {
2024-08-03 09:17:20 +00:00
"type" : "array" ,
"items" : {
2024-08-15 23:21:15 +00:00
"type" : "integer"
2024-08-03 09:17:20 +00:00
}
} ,
2024-08-25 17:23:15 +00:00
"QuestsAccepted" : {
"type" : "array" ,
"items" : {
2024-09-16 18:22:12 +00:00
"type" : [
"number" ,
"string"
]
2024-08-25 17:23:15 +00:00
}
} ,
"QuestsCompleted" : {
"type" : "array" ,
"items" : {
2024-09-16 18:22:12 +00:00
"type" : [
"number" ,
"string"
]
2024-08-25 17:23:15 +00:00
}
} ,
2024-08-15 23:21:15 +00:00
"AetheryteLocked" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Aetheryte"
} ,
"AetheryteUnlocked" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Aetheryte"
2024-08-17 18:59:42 +00:00
} ,
"RequiredQuestVariablesNotMet" : {
"type" : "boolean"
2024-08-17 20:09:47 +00:00
} ,
"NearPosition" : {
"type" : "object" ,
"properties" : {
"Position" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Vector3"
} ,
"MaximumDistance" : {
"type" : "number"
2024-09-02 19:36:34 +00:00
} ,
"TerritoryId" : {
"type" : "number"
2024-08-17 20:09:47 +00:00
}
} ,
"required" : [
"Position" ,
2024-09-02 19:36:34 +00:00
"MaximumDistance" ,
"TerritoryId"
2024-08-17 20:09:47 +00:00
] ,
"additionalProperties" : false
2024-08-15 23:21:15 +00:00
}
} ,
"additionalProperties" : false
} ,
"AethernetShortcutIf" : {
"type" : "object" ,
"properties" : {
"Never" : {
"type" : "boolean"
} ,
"InSameTerritory" : {
"type" : "boolean"
} ,
"AetheryteLocked" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Aetheryte"
} ,
"AetheryteUnlocked" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Aetheryte"
}
} ,
"additionalProperties" : false
}
} ,
"additionalProperties" : false
} ,
"CompletionQuestVariablesFlags" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/CompletionFlags"
} ,
"RequiredQuestVariables" : {
"type" : "array" ,
"description" : "Certain quests (primarily beast tribes/allied societies) have a RNG element to spawning targets, and the step should be skipped in its entirety if none of the sets below match" ,
"minItems" : 6 ,
"maxItems" : 6 ,
"items" : {
"type" : [
"array" ,
"null"
] ,
"items" : {
"type" : [
"number" ,
"object"
] ,
"properties" : {
"High" : {
2024-06-18 15:48:45 +00:00
"type" : [
"number" ,
"null"
2024-08-15 23:21:15 +00:00
] ,
"minimum" : 0 ,
"maximum" : 15
2024-06-18 15:48:45 +00:00
} ,
2024-08-15 23:21:15 +00:00
"Low" : {
"type" : [
"number" ,
"null"
] ,
"minimum" : 0 ,
"maximum" : 15
2024-06-01 20:01:50 +00:00
}
} ,
2024-08-15 23:21:15 +00:00
"minimum" : 0 ,
"maximum" : 255
}
}
} ,
2024-11-04 16:19:49 +00:00
"RequiredCurrentJob" : {
"description" : "Which class or job you are using whenever this step gets executed" ,
"type" : "array" ,
"items" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/ClassJob"
}
} ,
"RequiredQuestAcceptedJob" : {
"description" : "Which class or job you were using when accepting this quest (e.g. for beast tribes)" ,
"type" : "array" ,
"items" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/ClassJob"
}
} ,
2024-08-15 23:21:15 +00:00
"DelaySecondsAtStart" : {
"description" : "Time to wait before starting" ,
"type" : [
"number" ,
"null"
]
} ,
"Comment" : {
"type" : "string"
}
} ,
"required" : [
"TerritoryId" ,
"InteractionType"
] ,
"allOf" : [
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "Interact"
}
}
} ,
"then" : {
2024-08-22 10:14:12 +00:00
"properties" : {
"PickUpItemId" : {
"type" : "number"
}
} ,
2024-08-15 23:21:15 +00:00
"required" : [
"DataId"
]
}
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "WalkTo"
}
}
} ,
"then" : {
"required" : [
"Position"
]
}
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "AttuneAetheryte"
}
}
} ,
"then" : {
"properties" : {
"Aetheryte" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Aetheryte"
} ,
"DataId" : {
"type" : "null"
} ,
"Position" : {
"type" : "null"
}
} ,
"required" : [
"Aetheryte"
]
} ,
"else" : {
"properties" : {
"Aetheryte" : {
"type" : "null"
}
}
}
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "AttuneAethernetShard"
}
}
} ,
"then" : {
"properties" : {
"AethernetShard" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/AethernetShard"
} ,
"DataId" : {
"type" : "null"
} ,
"Position" : {
"type" : "null"
}
} ,
"required" : [
"AethernetShard"
]
} ,
"else" : {
"properties" : {
"AethernetShard" : {
"type" : "null"
}
}
}
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "AttuneAetherCurrent"
}
}
} ,
"then" : {
"properties" : {
"AetherCurrentId" : {
"type" : "integer" ,
"description" : "The aether current id, used to check if a given aetheryte is unlocked" ,
"exclusiveMinimum" : 0
}
} ,
"required" : [
"DataId" ,
"Position" ,
"AetherCurrentId"
]
}
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "Combat"
}
}
} ,
"then" : {
"properties" : {
"EnemySpawnType" : {
"type" : "string" ,
"description" : "Determines how enemy spawning is handled in combat locations" ,
"enum" : [
"AutoOnEnterArea" ,
"AfterInteraction" ,
"AfterItemUse" ,
2024-09-01 12:21:26 +00:00
"AfterAction" ,
2024-09-23 14:25:23 +00:00
"AfterEmote" ,
2024-09-11 21:17:39 +00:00
"OverworldEnemies" ,
2024-11-28 22:28:30 +00:00
"FateEnemies" ,
"FinishCombatIfAny"
2024-08-15 23:21:15 +00:00
]
} ,
"KillEnemyDataIds" : {
"description" : "The enemy data ids which are supposed to be killed" ,
"type" : "array" ,
"items" : {
"type" : "integer"
}
} ,
"ComplexCombatData" : {
"description" : "If multiple different enemies are supposed to be killed in a single quest step, this typically is handled via items" ,
"type" : "array" ,
"items" : {
"type" : "object" ,
"properties" : {
"DataId" : {
"description" : "The enemy data id which is supposed to be killed" ,
"type" : "integer"
} ,
"MinimumKillCount" : {
"description" : "Overworld mobs: If this number of mobs has been killed, will wait a bit before attempting to pull another mob to see if the quest progresses" ,
"type" : "integer"
} ,
"RewardItemId" : {
"type" : "integer"
} ,
"RewardItemCount" : {
"type" : "integer"
} ,
"CompletionQuestVariablesFlags" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/CompletionFlags"
} ,
"IgnoreQuestMarker" : {
"type" : "boolean"
2024-07-28 19:03:44 +00:00
}
} ,
2024-08-15 23:21:15 +00:00
"required" : [
"DataId"
]
}
} ,
2024-10-12 20:11:54 +00:00
"CombatItemUse" : {
"description" : "Unlike the 'AfterItemUse' condition that is used for spawning an enemy in the first place, interacting with an item at a certain stage of combat is required" ,
"type" : "object" ,
"properties" : {
"ItemId" : {
"type" : "integer"
} ,
"Condition" : {
"type" : "string" ,
"enum" : [
2024-10-12 23:51:44 +00:00
"Incapacitated" ,
"Health%"
2024-10-12 20:11:54 +00:00
]
2024-10-12 23:51:44 +00:00
} ,
"Value" : {
"type" : "integer"
2024-10-12 20:11:54 +00:00
}
} ,
"required" : [
"ItemId" ,
"Condition"
]
} ,
2024-08-15 23:21:15 +00:00
"CombatDelaySecondsAtStart" : {
"type" : "number"
}
} ,
"required" : [
"Position" ,
"EnemySpawnType"
] ,
"oneOf" : [
{
"required" : [
"KillEnemyDataIds"
]
} ,
{
"required" : [
"ComplexCombatData"
]
}
]
}
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "UseItem"
} ,
"ItemId" : {
"not" : {
"const" : 30362
}
}
}
} ,
"then" : {
"required" : [
"Position"
]
}
} ,
{
"if" : {
"anyOf" : [
{
"properties" : {
"InteractionType" : {
"const" : "UseItem"
2024-07-28 19:03:44 +00:00
}
2024-08-15 23:21:15 +00:00
}
} ,
{
"properties" : {
"InteractionType" : {
"const" : "Combat"
2024-06-01 20:01:50 +00:00
} ,
2024-08-15 23:21:15 +00:00
"EnemySpawnType" : {
"const" : "AfterItemUse"
}
}
}
]
} ,
"then" : {
"properties" : {
"GroundTarget" : {
"type" : [
"boolean" ,
"null"
] ,
"default" : false
}
} ,
"required" : [
"ItemId"
]
}
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "EquipItem"
}
}
} ,
"then" : {
"required" : [
"ItemId"
]
}
} ,
2024-09-22 12:31:14 +00:00
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "PurchaseItem"
}
}
} ,
"then" : {
"properties" : {
"ItemCount" : {
"type" : "integer"
} ,
"PurchaseMenu" : {
"type" : "object" ,
"description" : "The text to use with /say" ,
"properties" : {
"ExcelSheet" : {
"type" : "string"
} ,
"Key" : {
"type" : [
"string" ,
"integer"
]
}
} ,
"required" : [
"Key"
]
}
} ,
"required" : [
"ItemId" ,
"ItemCount"
]
}
} ,
2024-08-15 23:21:15 +00:00
{
"if" : {
"properties" : {
"InteractionType" : {
"anyOf" : [
{
"const" : "Emote"
} ,
{
"const" : "AcceptQuest"
} ,
{
"const" : "CompleteQuest"
} ,
{
"const" : "SinglePlayerDuty"
}
]
}
}
} ,
"then" : {
"properties" : {
"Emote" : {
"type" : "string" ,
"description" : "The emote to use" ,
"enum" : [
"stretch" ,
"wave" ,
"rally" ,
"deny" ,
"pray" ,
"slap" ,
"doubt" ,
"psych" ,
"cheer" ,
"happy" ,
"poke" ,
"flex" ,
"soothe" ,
"me" ,
"welcome" ,
"imperialsalute" ,
"pet" ,
"dance" ,
"respect" ,
"lookout" ,
"kneel" ,
"bow" ,
"uchiwasshoi" ,
"clap" ,
2024-09-06 11:25:10 +00:00
"victorypose" ,
2024-09-07 23:40:05 +00:00
"comfort" ,
2024-09-08 12:38:24 +00:00
"battlestance" ,
2024-09-16 02:42:35 +00:00
"doze" ,
2024-09-22 17:06:58 +00:00
"box" ,
2024-10-20 09:27:30 +00:00
"sundropdance" ,
2024-10-20 09:35:27 +00:00
"cry" ,
2024-10-19 08:10:33 +00:00
"disappointed" ,
"examineself" ,
2024-11-27 11:34:11 +00:00
"joy" ,
2024-12-18 20:13:04 +00:00
"mogdance" ,
"salute"
2024-08-15 23:21:15 +00:00
]
}
}
}
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "Emote"
}
}
} ,
"then" : {
"required" : [
"Position" ,
"Emote"
]
}
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"anyOf" : [
{
"const" : "Say"
} ,
{
"const" : "CompleteQuest"
}
]
}
}
} ,
"then" : {
"properties" : {
"ChatMessage" : {
"type" : "object" ,
"description" : "The text to use with /say" ,
"properties" : {
"ExcelSheet" : {
"type" : "string"
} ,
"Key" : {
"type" : "string"
2024-06-01 20:01:50 +00:00
}
} ,
2024-08-15 23:21:15 +00:00
"required" : [
"Key"
]
}
}
}
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "Say"
}
}
} ,
"then" : {
"required" : [
"ChatMessage"
]
}
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "Action"
}
}
} ,
"then" : {
"properties" : {
"Action" : {
"type" : "string" ,
"description" : "The action to use" ,
"enum" : [
2024-08-22 11:05:40 +00:00
"Heavy Swing" ,
2024-08-31 10:08:52 +00:00
"Bootshine" ,
2024-08-31 12:49:52 +00:00
"Twin Snakes" ,
"Demolish" ,
"Dragon Kick" ,
2024-08-22 22:33:18 +00:00
"Heavy Shot" ,
2024-08-15 23:21:15 +00:00
"Cure" ,
2024-08-29 14:29:21 +00:00
"Cure II" ,
2024-09-15 00:22:29 +00:00
"Eukrasia" ,
"Diagnosis" ,
"Eukrasian Diagnosis" ,
2024-08-15 23:21:15 +00:00
"Esuna" ,
"Physick" ,
2024-09-01 14:15:46 +00:00
"Aspected Benefic" ,
2024-08-31 12:49:52 +00:00
"Form Shift" ,
2024-10-19 16:51:34 +00:00
"Fiery Breath" ,
2024-08-20 21:36:41 +00:00
"Buffet (Sanuwa)" ,
"Buffet (Griffin)" ,
2024-09-03 15:34:31 +00:00
"Trample" ,
2024-08-15 23:21:15 +00:00
"Fumigate" ,
2024-12-18 00:59:45 +00:00
"Seed" ,
2024-09-28 17:53:40 +00:00
"Inhale" ,
2024-08-15 23:21:15 +00:00
"Siphon Snout" ,
2024-09-16 16:21:34 +00:00
"Peculiar Light" ,
2024-08-22 18:21:49 +00:00
"Cannonfire" ,
2024-08-15 23:21:15 +00:00
"Red Gulal" ,
"Yellow Gulal" ,
2024-08-20 21:36:41 +00:00
"Blue Gulal" ,
2024-08-22 18:21:49 +00:00
"Electric Flux" ,
2024-10-19 08:31:45 +00:00
"Hop-step" ,
"Fuma Shuriken" ,
"Katon" ,
2024-10-19 15:24:21 +00:00
"Raiton" ,
2024-11-04 12:42:27 +00:00
"Hide" ,
2024-11-20 17:39:30 +00:00
"Slug Shot" ,
2024-12-02 04:34:35 +00:00
"Bosom Brook" ,
"Souleater"
2024-08-15 23:21:15 +00:00
]
}
} ,
"required" : [
"Action"
]
}
} ,
2024-10-19 15:24:21 +00:00
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "StatusOff"
}
}
} ,
"then" : {
"properties" : {
"Status" : {
"type" : "string" ,
"description" : "The status to disable" ,
"enum" : [
"Hidden"
]
}
} ,
"required" : [
"Status"
]
}
} ,
2024-08-15 23:21:15 +00:00
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "Jump"
}
}
} ,
"then" : {
"properties" : {
"JumpDestination" : {
"type" : "object" ,
"properties" : {
"Position" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Vector3"
2024-06-01 20:01:50 +00:00
} ,
2024-08-15 23:21:15 +00:00
"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"
2024-07-17 10:58:08 +00:00
]
2024-07-17 18:40:38 +00:00
} ,
2024-08-15 23:21:15 +00:00
"Type" : {
"type" : "string" ,
"enum" : [
"SingleJump" ,
"RepeatedJumps"
] ,
"default" : "SingleJump"
2024-07-17 10:58:08 +00:00
}
} ,
2024-08-15 23:21:15 +00:00
"required" : [
"Position"
]
}
} ,
"required" : [
"Position" ,
"JumpDestination"
]
}
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"anyOf" : [
{
"const" : "Interact"
2024-07-17 10:58:08 +00:00
} ,
2024-08-15 23:21:15 +00:00
{
"const" : "SinglePlayerDuty"
2024-07-17 18:40:38 +00:00
} ,
2024-08-15 23:21:15 +00:00
{
"const" : "WaitForManualProgress"
2024-06-01 20:01:50 +00:00
} ,
2024-08-15 23:21:15 +00:00
{
"const" : "AcceptQuest"
2024-06-01 20:01:50 +00:00
} ,
2024-08-15 23:21:15 +00:00
{
"const" : "CompleteQuest"
2024-06-13 23:10:05 +00:00
} ,
2024-08-15 23:21:15 +00:00
{
"const" : "Instruction"
2024-06-01 20:01:50 +00:00
} ,
2024-08-15 23:21:15 +00:00
{
"const" : "Say"
2024-06-13 15:35:33 +00:00
} ,
2024-08-15 23:21:15 +00:00
{
"const" : "Emote"
2024-06-01 20:01:50 +00:00
} ,
2024-08-15 23:21:15 +00:00
{
"const" : "UseItem"
2024-07-08 18:46:01 +00:00
}
2024-08-15 23:21:15 +00:00
]
}
}
} ,
"then" : {
"properties" : {
"DialogueChoices" : {
"type" : "array" ,
"items" : {
"type" : "object" ,
"properties" : {
"Type" : {
"type" : "string" ,
"enum" : [
"YesNo" ,
"List"
]
} ,
"ExcelSheet" : {
"type" : "string"
2024-07-08 18:46:01 +00:00
}
} ,
2024-08-15 23:21:15 +00:00
"required" : [
"Type"
] ,
"allOf" : [
{
"if" : {
"properties" : {
"Type" : {
"const" : "YesNo"
2024-07-30 02:45:06 +00:00
}
2024-08-15 23:21:15 +00:00
}
} ,
"then" : {
2024-06-03 12:20:02 +00:00
"properties" : {
2024-08-15 23:21:15 +00:00
"Prompt" : {
"type" : [
"string" ,
"integer"
]
2024-06-03 12:20:02 +00:00
} ,
2024-09-11 21:17:39 +00:00
"PromptIsRegularExpression" : {
"type" : "boolean"
} ,
2024-08-15 23:21:15 +00:00
"Yes" : {
"type" : "boolean" ,
"default" : true
2024-06-03 12:20:02 +00:00
}
} ,
"required" : [
2024-08-15 23:21:15 +00:00
"Prompt" ,
"Yes"
2024-07-10 19:01:41 +00:00
]
}
} ,
2024-08-15 23:21:15 +00:00
{
"if" : {
2024-06-01 20:01:50 +00:00
"properties" : {
2024-08-15 23:21:15 +00:00
"Type" : {
"const" : "List"
}
}
} ,
"then" : {
"properties" : {
"Prompt" : {
2024-06-01 20:01:50 +00:00
"type" : [
2024-08-15 23:21:15 +00:00
"string" ,
"integer" ,
2024-06-01 20:01:50 +00:00
"null"
2024-08-15 23:21:15 +00:00
]
2024-06-01 20:01:50 +00:00
} ,
2024-09-11 21:17:39 +00:00
"PromptIsRegularExpression" : {
"type" : "boolean"
} ,
2024-08-15 23:21:15 +00:00
"Answer" : {
2024-06-01 20:01:50 +00:00
"type" : [
2024-08-15 23:21:15 +00:00
"string" ,
"integer"
2024-06-01 20:01:50 +00:00
]
2024-09-11 21:17:39 +00:00
} ,
"AnswerIsRegularExpression" : {
"type" : "boolean"
2024-06-01 20:01:50 +00:00
}
} ,
"required" : [
2024-08-15 23:21:15 +00:00
"Prompt" ,
"Answer"
2024-06-06 16:49:49 +00:00
]
2024-06-01 20:01:50 +00:00
}
}
2024-08-15 23:21:15 +00:00
]
2024-05-25 21:51:37 +00:00
}
2024-08-15 23:21:15 +00:00
} ,
"PointMenuChoices" : {
"type" : "array" ,
"items" : {
"type" : "integer" ,
"minimum" : 0
}
}
}
}
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "Duty"
2024-07-27 22:13:52 +00:00
}
2024-05-25 21:51:37 +00:00
}
} ,
2024-08-15 23:21:15 +00:00
"then" : {
"properties" : {
"ContentFinderConditionId" : {
"type" : "integer" ,
"exclusiveMinimum" : 0 ,
"exclusiveMaximum" : 3000
} ,
"DataId" : {
"type" : "null"
} ,
"Position" : {
"type" : "null"
}
} ,
"required" : [
"ContentFinderConditionId"
]
2024-05-25 21:51:37 +00:00
}
} ,
2024-08-15 23:21:15 +00:00
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "WaitForNpcAtPosition"
}
}
} ,
"then" : {
"properties" : {
"NpcWaitDistance" : {
"type" : "number" ,
"exclusiveMinimum" : 0
}
}
}
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "AcceptQuest"
}
}
} ,
"then" : {
"properties" : {
"PickUpQuestId" : {
"type" : [
"null" ,
"number" ,
"string"
] ,
"description" : "Determines the quest which should be accepted. If empty/null, accepts the quest corresponding to the file name."
}
}
}
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "CompleteQuest"
}
}
} ,
"then" : {
"properties" : {
"TurnInQuestId" : {
"type" : [
"null" ,
"number" ,
"string"
] ,
"description" : "Determines the quest which should be turned in. If empty/null, turns in the quest corresponding to the file name."
} ,
"NextQuestId" : {
"type" : [
"null" ,
"number" ,
"string"
] ,
"description" : "For quest chains (e.g. DT healer role quests) Which quest to do next, given that you meet the required level."
}
}
}
2024-08-16 18:42:11 +00:00
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "Craft"
}
}
} ,
"then" : {
"properties" : {
2024-08-16 19:57:35 +00:00
"ItemCount" : {
2024-08-16 18:42:11 +00:00
"type" : "number"
}
} ,
"required" : [
"ItemId" ,
2024-08-16 19:57:35 +00:00
"ItemCount"
2024-08-16 18:42:11 +00:00
]
}
2024-09-16 18:22:12 +00:00
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "Gather"
}
}
} ,
"then" : {
"properties" : {
"ItemsToGather" : {
"type" : "array" ,
"description" : "Unlike crafting steps, which will always craft a single item id regardless of class, this allows for gathering different items depending on whether you've picked the quest up as miner or botanist" ,
"items" : {
"type" : "object" ,
"properties" : {
"ItemId" : {
"type" : "number"
} ,
"AlternativeItemId" : {
"description" : "For leves that allow you to gather two items with different chance percentage, this is the preferred item if the gathering chance is 100% (after buffs)" ,
"type" : "number"
} ,
"ItemCount" : {
"type" : "number" ,
"exclusiveMinimum" : 0
} ,
"Collectability" : {
"type" : "number" ,
"minimum" : 0 ,
"maximum" : 1000
}
} ,
"required" : [
"ItemId" ,
"ItemCount"
]
}
}
} ,
2024-08-15 23:21:15 +00:00
"required" : [
2024-09-16 18:22:12 +00:00
"ItemsToGather"
2024-08-15 23:21:15 +00:00
]
}
2024-10-12 13:59:21 +00:00
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"anyOf" : [
{
"const" : "WaitForManualProgress"
} ,
{
"const" : "Instruction"
} ,
{
"const" : "Snipe"
}
]
}
}
} ,
"then" : {
"required" : [
"Comment"
]
}
2024-11-11 21:38:20 +00:00
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "SwitchClass"
}
}
} ,
"then" : {
"properties" : {
"TargetClass" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/ClassJob"
}
} ,
"required" : [
"TargetClass"
]
}
2024-09-16 18:22:12 +00:00
}
]
2024-05-25 21:51:37 +00:00
}
2024-08-15 23:21:15 +00:00
}
2024-05-25 21:51:37 +00:00
}