2024-05-25 23:51:37 +02:00
{
"$schema" : "https://json-schema.org/draft/2020-12/schema" ,
2024-07-27 01:32:17 +02:00
"$id" : "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json" ,
2024-05-25 23:51:37 +02:00
"title" : "Questionable V1" ,
"description" : "A series of quest sequences" ,
"type" : "object" ,
"properties" : {
2024-07-14 12:39:02 +02:00
"$schema" : {
"type" : "string" ,
2024-07-27 01:32:17 +02:00
"const" : "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json"
2024-07-14 12:39:02 +02:00
} ,
2024-05-25 23:51:37 +02:00
"Author" : {
"description" : "Author of the quest sequence" ,
2024-07-21 02:06:33 +02:00
"type" : [
"string" ,
"array"
] ,
2024-05-25 23:51:37 +02:00
"items" : {
"type" : "string"
}
} ,
2024-07-15 23:09:09 +02:00
"Disabled" : {
"type" : "boolean"
} ,
2024-05-25 23:51:37 +02:00
"Comment" : {
"type" : "string"
} ,
2024-07-14 12:44:31 +02:00
"$" : {
"type" : "string" ,
"description" : "Dev Comment (not visible in-game)"
} ,
2024-05-25 23:51:37 +02:00
"QuestSequence" : {
"type" : "array" ,
"items" : {
"type" : "object" ,
"properties" : {
"Sequence" : {
"type" : "integer" ,
"minimum" : 0 ,
"maximum" : 255
} ,
"Steps" : {
"type" : "array" ,
"items" : {
2024-08-16 01:21:15 +02:00
"$ref" : "#/$defs/Step"
}
} ,
"Comment" : {
"type" : "string"
2025-01-24 22:26:24 +01:00
} ,
"$" : {
"type" : "string" ,
"description" : "Dev Comment (not visible in-game)"
2024-08-16 01:21:15 +02:00
}
} ,
"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" ,
2025-01-12 02:40:09 +01:00
"minimum" : 0.25
2024-08-16 01:21:15 +02:00
} ,
"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 15:45:16 +02: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-16 01:21:15 +02: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 14:31:14 +02:00
"PurchaseItem" ,
2024-08-16 01:21:15 +02:00
"EquipRecommended" ,
"Say" ,
"Emote" ,
"Action" ,
2024-10-19 17:24:21 +02:00
"StatusOff" ,
2024-08-16 01:21:15 +02:00
"WaitForNpcAtPosition" ,
"WaitForManualProgress" ,
"Duty" ,
"SinglePlayerDuty" ,
"Jump" ,
"Dive" ,
2024-08-16 20:42:11 +02:00
"Craft" ,
2024-09-16 20:22:12 +02:00
"Gather" ,
2024-09-11 16:58:07 +02:00
"Snipe" ,
2024-11-11 22:38:20 +01:00
"SwitchClass" ,
2024-08-16 01:21:15 +02: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" ,
2025-01-19 22:58:14 +01:00
"exclusiveMinimum" : 0 ,
"maximum" : 2010000
2024-08-16 01:21:15 +02:00
} ,
"SkipConditions" : {
"type" : "object" ,
"properties" : {
"StepIf" : {
2024-05-25 23:51:37 +02:00
"type" : "object" ,
"properties" : {
2024-08-16 01:21:15 +02:00
"Never" : {
"type" : "boolean"
2024-05-25 23:51:37 +02:00
} ,
2024-08-16 01:21:15 +02:00
"CompletionQuestVariablesFlags" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/CompletionFlags"
2024-05-28 22:24:06 +02:00
} ,
2024-08-16 01:21:15 +02:00
"Flying" : {
2024-05-25 23:51:37 +02:00
"type" : "string" ,
"enum" : [
2024-08-16 01:21:15 +02:00
"Locked" ,
"Unlocked"
2024-05-25 23:51:37 +02:00
]
} ,
2024-08-16 01:21:15 +02:00
"Chocobo" : {
"type" : "string" ,
"enum" : [
"Locked" ,
"Unlocked"
]
2024-05-27 21:54:34 +02:00
} ,
2024-12-03 14:00:20 +01:00
"Diving" : {
"type" : [ "boolean" , "null" ]
} ,
2024-08-16 01:21:15 +02:00
"NotTargetable" : {
2024-05-25 23:51:37 +02:00
"type" : "boolean"
} ,
2024-08-16 01:21:15 +02:00
"InTerritory" : {
"type" : "array" ,
"items" : {
"type" : "integer"
}
2024-05-27 23:51:11 +02:00
} ,
2024-08-16 01:21:15 +02:00
"NotInTerritory" : {
"type" : "array" ,
"items" : {
"type" : "integer"
}
2024-07-12 23:58:48 +02:00
} ,
2024-08-16 01:21:15 +02:00
"Item" : {
"type" : "object" ,
"properties" : {
"NotInInventory" : {
"type" : "boolean"
}
}
2024-06-01 18:46:57 +02:00
} ,
2024-08-16 01:21:15 +02:00
"QuestsAccepted" : {
"type" : "array" ,
"items" : {
2024-09-16 20:22:12 +02:00
"type" : [
"number" ,
"string"
]
2024-08-16 01:21:15 +02:00
}
2024-05-26 21:45:26 +02:00
} ,
2024-08-16 01:21:15 +02:00
"QuestsCompleted" : {
2024-05-25 23:51:37 +02:00
"type" : "array" ,
"items" : {
2024-09-16 20:22:12 +02:00
"type" : [
"number" ,
"string"
]
2024-05-25 23:51:37 +02:00
}
} ,
2024-09-23 02:00:32 +02:00
"NotNamePlateIconId" : {
"type" : "array" ,
"items" : {
"type" : "integer"
}
} ,
2024-08-16 01:21:15 +02:00
"AetheryteLocked" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Aetheryte"
2024-05-27 21:54:34 +02:00
} ,
2024-08-16 01:21:15 +02:00
"AetheryteUnlocked" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Aetheryte"
} ,
"NearPosition" : {
2024-07-27 15:39:47 +02:00
"type" : "object" ,
"properties" : {
2024-08-16 01:21:15 +02:00
"Position" : {
"$ref" : "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Vector3"
2024-07-28 00:13:52 +02:00
} ,
2024-08-16 01:21:15 +02:00
"MaximumDistance" : {
"type" : "number"
2024-09-02 21:36:34 +02:00
} ,
"TerritoryId" : {
"type" : "number"
2024-07-27 15:39:47 +02:00
}
} ,
2024-08-16 01:21:15 +02:00
"required" : [
"Position" ,
2024-09-02 21:36:34 +02:00
"MaximumDistance" ,
"TerritoryId"
2024-08-16 01:21:15 +02:00
] ,
2024-07-27 15:39:47 +02:00
"additionalProperties" : false
2024-05-25 23:51:37 +02:00
} ,
2024-08-16 01:21:15 +02:00
"ExtraCondition" : {
"type" : "string" ,
"enum" : [
"WakingSandsMainArea" ,
2025-01-24 19:40:36 +01:00
"WakingSandsSolar" ,
2024-10-19 10:31:27 +02:00
"RisingStonesSolar" ,
"RoguesGuild" ,
"DockStorehouse"
2024-08-16 01:21:15 +02:00
]
}
} ,
"additionalProperties" : false
} ,
"AetheryteShortcutIf" : {
"type" : "object" ,
"properties" : {
"Never" : {
"type" : "boolean"
2024-06-01 18:46:57 +02:00
} ,
2024-08-16 01:21:15 +02:00
"InSameTerritory" : {
"type" : "boolean"
2024-07-20 19:09:51 +02:00
} ,
2024-08-16 01:21:15 +02:00
"InTerritory" : {
2024-08-03 11:17:20 +02:00
"type" : "array" ,
"items" : {
2024-08-16 01:21:15 +02:00
"type" : "integer"
2024-08-03 11:17:20 +02:00
}
} ,
2024-08-25 19:23:15 +02:00
"QuestsAccepted" : {
"type" : "array" ,
"items" : {
2024-09-16 20:22:12 +02:00
"type" : [
"number" ,
"string"
]
2024-08-25 19:23:15 +02:00
}
} ,
"QuestsCompleted" : {
"type" : "array" ,
"items" : {
2024-09-16 20:22:12 +02:00
"type" : [
"number" ,
"string"
]
2024-08-25 19:23:15 +02:00
}
} ,
2024-08-16 01:21:15 +02: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 20:59:42 +02:00
} ,
"RequiredQuestVariablesNotMet" : {
"type" : "boolean"
2024-08-17 22:09:47 +02: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 21:36:34 +02:00
} ,
"TerritoryId" : {
"type" : "number"
2024-08-17 22:09:47 +02:00
}
} ,
"required" : [
"Position" ,
2024-09-02 21:36:34 +02:00
"MaximumDistance" ,
"TerritoryId"
2024-08-17 22:09:47 +02:00
] ,
"additionalProperties" : false
2024-08-16 01:21:15 +02: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 17:48:45 +02:00
"type" : [
"number" ,
"null"
2024-08-16 01:21:15 +02:00
] ,
"minimum" : 0 ,
"maximum" : 15
2024-06-18 17:48:45 +02:00
} ,
2024-08-16 01:21:15 +02:00
"Low" : {
"type" : [
"number" ,
"null"
] ,
"minimum" : 0 ,
"maximum" : 15
2024-06-01 22:01:50 +02:00
}
} ,
2024-08-16 01:21:15 +02:00
"minimum" : 0 ,
"maximum" : 255
}
}
} ,
2024-11-04 17:19:49 +01: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-16 01:21:15 +02: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 12:14:12 +02:00
"properties" : {
"PickUpItemId" : {
"type" : "number"
}
} ,
2024-08-16 01:21:15 +02: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 14:21:26 +02:00
"AfterAction" ,
2024-09-23 16:25:23 +02:00
"AfterEmote" ,
2024-09-11 23:17:39 +02:00
"OverworldEnemies" ,
2024-11-28 23:28:30 +01:00
"FateEnemies" ,
"FinishCombatIfAny"
2024-08-16 01:21:15 +02: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"
} ,
2024-12-22 18:04:23 +01:00
"NameId" : {
"description" : "Name id of the enemy which is supposed to be killed, helpful if multiple nearby enemies share the same DataId" ,
"type" : "integer"
} ,
2024-08-16 01:21:15 +02:00
"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 21:03:44 +02:00
}
} ,
2024-08-16 01:21:15 +02:00
"required" : [
"DataId"
]
}
} ,
2024-10-12 22:11:54 +02: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" : {
2025-01-19 22:58:14 +01:00
"type" : "integer" ,
"maximum" : 2010000
2024-10-12 22:11:54 +02:00
} ,
"Condition" : {
"type" : "string" ,
"enum" : [
2024-10-13 01:51:44 +02:00
"Incapacitated" ,
2025-01-19 22:58:14 +01:00
"Health%" ,
"MissingStatus"
2024-10-12 22:11:54 +02:00
]
2024-10-13 01:51:44 +02:00
} ,
"Value" : {
"type" : "integer"
2024-10-12 22:11:54 +02:00
}
} ,
"required" : [
"ItemId" ,
"Condition"
]
} ,
2024-08-16 01:21:15 +02:00
"CombatDelaySecondsAtStart" : {
"type" : "number"
}
} ,
"required" : [
"Position" ,
"EnemySpawnType"
] ,
"oneOf" : [
{
"required" : [
"KillEnemyDataIds"
]
} ,
{
"required" : [
"ComplexCombatData"
]
}
]
}
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "UseItem"
} ,
"ItemId" : {
2025-01-24 22:26:24 +01:00
"minimum" : 2000000
2024-08-16 01:21:15 +02:00
}
}
} ,
"then" : {
"required" : [
"Position"
]
}
} ,
{
"if" : {
"anyOf" : [
{
"properties" : {
"InteractionType" : {
"const" : "UseItem"
2024-07-28 21:03:44 +02:00
}
2024-08-16 01:21:15 +02:00
}
} ,
{
"properties" : {
"InteractionType" : {
"const" : "Combat"
2024-06-01 22:01:50 +02:00
} ,
2024-08-16 01:21:15 +02: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 14:31:14 +02: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-16 01:21:15 +02: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 13:25:10 +02:00
"victorypose" ,
2024-09-08 01:40:05 +02:00
"comfort" ,
2024-09-08 14:38:24 +02:00
"battlestance" ,
2024-09-16 04:42:35 +02:00
"doze" ,
2024-09-23 01:06:58 +08:00
"box" ,
2024-10-20 02:27:30 -07:00
"sundropdance" ,
2024-10-20 02:35:27 -07:00
"cry" ,
2024-10-19 10:10:33 +02:00
"disappointed" ,
"examineself" ,
2024-11-27 19:34:11 +08:00
"joy" ,
2024-12-18 21:13:04 +01:00
"mogdance" ,
2024-12-26 00:22:00 +01:00
"salute" ,
2025-01-05 15:51:20 +01:00
"laugh" ,
"greeting"
2024-08-16 01:21:15 +02: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 22:01:50 +02:00
}
} ,
2024-08-16 01:21:15 +02: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 13:05:40 +02:00
"Heavy Swing" ,
2024-08-31 18:08:52 +08:00
"Bootshine" ,
2024-08-31 20:49:52 +08:00
"Twin Snakes" ,
"Demolish" ,
"Dragon Kick" ,
2024-08-22 15:33:18 -07:00
"Heavy Shot" ,
2024-08-16 01:21:15 +02:00
"Cure" ,
2024-08-29 16:29:21 +02:00
"Cure II" ,
2024-09-15 10:22:29 +10:00
"Eukrasia" ,
"Diagnosis" ,
"Eukrasian Diagnosis" ,
2024-08-16 01:21:15 +02:00
"Esuna" ,
"Physick" ,
2024-09-01 22:15:46 +08:00
"Aspected Benefic" ,
2024-08-31 20:49:52 +08:00
"Form Shift" ,
2024-10-20 00:51:34 +08:00
"Fiery Breath" ,
2024-08-20 23:36:41 +02:00
"Buffet (Sanuwa)" ,
"Buffet (Griffin)" ,
2024-09-03 23:34:31 +08:00
"Trample" ,
2024-08-16 01:21:15 +02:00
"Fumigate" ,
2024-12-26 22:53:42 +08:00
"Roar" ,
2024-12-18 01:59:45 +01:00
"Seed" ,
2024-09-29 01:53:40 +08:00
"Inhale" ,
2024-08-16 01:21:15 +02:00
"Siphon Snout" ,
2024-09-16 18:21:34 +02:00
"Peculiar Light" ,
2024-08-22 20:21:49 +02:00
"Cannonfire" ,
2024-08-16 01:21:15 +02:00
"Red Gulal" ,
"Yellow Gulal" ,
2024-08-20 23:36:41 +02:00
"Blue Gulal" ,
2024-08-22 20:21:49 +02:00
"Electric Flux" ,
2024-10-19 10:31:45 +02:00
"Hop-step" ,
"Fuma Shuriken" ,
"Katon" ,
2024-10-19 17:24:21 +02:00
"Raiton" ,
2024-11-04 13:42:27 +01:00
"Hide" ,
2024-11-20 18:39:30 +01:00
"Slug Shot" ,
2024-12-02 05:34:35 +01:00
"Bosom Brook" ,
2024-12-25 01:26:45 +01:00
"Souleater" ,
2024-12-26 14:15:43 +01:00
"Fire III" ,
2024-12-26 17:34:28 +01:00
"Adloquium" ,
"Water Cannon"
2024-08-16 01:21:15 +02:00
]
}
} ,
"required" : [
"Action"
]
}
} ,
2024-10-19 17:24:21 +02:00
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "StatusOff"
}
}
} ,
"then" : {
"properties" : {
"Status" : {
"type" : "string" ,
"description" : "The status to disable" ,
"enum" : [
"Hidden"
]
}
} ,
"required" : [
"Status"
]
}
} ,
2024-08-16 01:21:15 +02: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 22:01:50 +02:00
} ,
2024-08-16 01:21:15 +02: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 12:58:08 +02:00
]
2024-07-17 20:40:38 +02:00
} ,
2024-08-16 01:21:15 +02:00
"Type" : {
"type" : "string" ,
"enum" : [
"SingleJump" ,
"RepeatedJumps"
] ,
"default" : "SingleJump"
2024-07-17 12:58:08 +02:00
}
} ,
2024-08-16 01:21:15 +02:00
"required" : [
"Position"
]
}
} ,
"required" : [
"Position" ,
"JumpDestination"
]
}
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"anyOf" : [
{
"const" : "Interact"
2024-07-17 12:58:08 +02:00
} ,
2024-08-16 01:21:15 +02:00
{
"const" : "SinglePlayerDuty"
2024-07-17 20:40:38 +02:00
} ,
2024-08-16 01:21:15 +02:00
{
"const" : "WaitForManualProgress"
2024-06-01 22:01:50 +02:00
} ,
2024-08-16 01:21:15 +02:00
{
"const" : "AcceptQuest"
2024-06-01 22:01:50 +02:00
} ,
2024-08-16 01:21:15 +02:00
{
"const" : "CompleteQuest"
2024-06-14 01:10:05 +02:00
} ,
2024-08-16 01:21:15 +02:00
{
"const" : "Instruction"
2024-06-01 22:01:50 +02:00
} ,
2024-08-16 01:21:15 +02:00
{
"const" : "Say"
2024-06-13 17:35:33 +02:00
} ,
2024-08-16 01:21:15 +02:00
{
"const" : "Emote"
2024-06-01 22:01:50 +02:00
} ,
2024-08-16 01:21:15 +02:00
{
"const" : "UseItem"
2024-07-08 20:46:01 +02:00
}
2024-08-16 01:21:15 +02:00
]
}
}
} ,
"then" : {
"properties" : {
"DialogueChoices" : {
"type" : "array" ,
"items" : {
"type" : "object" ,
"properties" : {
"Type" : {
"type" : "string" ,
"enum" : [
"YesNo" ,
"List"
]
} ,
"ExcelSheet" : {
"type" : "string"
2024-07-08 20:46:01 +02:00
}
} ,
2024-08-16 01:21:15 +02:00
"required" : [
"Type"
] ,
"allOf" : [
{
"if" : {
"properties" : {
"Type" : {
"const" : "YesNo"
2024-07-30 04:45:06 +02:00
}
2024-08-16 01:21:15 +02:00
}
} ,
"then" : {
2024-06-03 14:20:02 +02:00
"properties" : {
2024-08-16 01:21:15 +02:00
"Prompt" : {
"type" : [
"string" ,
"integer"
]
2024-06-03 14:20:02 +02:00
} ,
2024-09-11 23:17:39 +02:00
"PromptIsRegularExpression" : {
"type" : "boolean"
} ,
2024-08-16 01:21:15 +02:00
"Yes" : {
"type" : "boolean" ,
"default" : true
2024-06-03 14:20:02 +02:00
}
} ,
"required" : [
2024-08-16 01:21:15 +02:00
"Prompt" ,
"Yes"
2024-07-10 21:01:41 +02:00
]
}
} ,
2024-08-16 01:21:15 +02:00
{
"if" : {
2024-06-01 22:01:50 +02:00
"properties" : {
2024-08-16 01:21:15 +02:00
"Type" : {
"const" : "List"
}
}
} ,
"then" : {
"properties" : {
"Prompt" : {
2024-06-01 22:01:50 +02:00
"type" : [
2024-08-16 01:21:15 +02:00
"string" ,
"integer" ,
2024-06-01 22:01:50 +02:00
"null"
2024-08-16 01:21:15 +02:00
]
2024-06-01 22:01:50 +02:00
} ,
2024-09-11 23:17:39 +02:00
"PromptIsRegularExpression" : {
"type" : "boolean"
} ,
2024-08-16 01:21:15 +02:00
"Answer" : {
2024-06-01 22:01:50 +02:00
"type" : [
2024-08-16 01:21:15 +02:00
"string" ,
"integer"
2024-06-01 22:01:50 +02:00
]
2024-09-11 23:17:39 +02:00
} ,
"AnswerIsRegularExpression" : {
"type" : "boolean"
2024-06-01 22:01:50 +02:00
}
} ,
"required" : [
2024-08-16 01:21:15 +02:00
"Prompt" ,
"Answer"
2024-06-06 18:49:49 +02:00
]
2024-06-01 22:01:50 +02:00
}
}
2024-08-16 01:21:15 +02:00
]
2024-05-25 23:51:37 +02:00
}
2024-08-16 01:21:15 +02:00
} ,
"PointMenuChoices" : {
"type" : "array" ,
"items" : {
"type" : "integer" ,
"minimum" : 0
}
}
}
}
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "Duty"
2024-07-28 00:13:52 +02:00
}
2024-05-25 23:51:37 +02:00
}
} ,
2024-08-16 01:21:15 +02:00
"then" : {
"properties" : {
"ContentFinderConditionId" : {
"type" : "integer" ,
"exclusiveMinimum" : 0 ,
"exclusiveMaximum" : 3000
} ,
2024-12-30 02:50:18 +01:00
"AutoDutyEnabled" : {
"type" : "boolean"
} ,
2024-08-16 01:21:15 +02:00
"DataId" : {
"type" : "null"
} ,
"Position" : {
"type" : "null"
}
} ,
"required" : [
"ContentFinderConditionId"
]
2024-05-25 23:51:37 +02:00
}
} ,
2024-08-16 01:21:15 +02: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 20:42:11 +02:00
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"const" : "Craft"
}
}
} ,
"then" : {
"properties" : {
2024-08-16 21:57:35 +02:00
"ItemCount" : {
2024-08-16 20:42:11 +02:00
"type" : "number"
}
} ,
"required" : [
"ItemId" ,
2024-08-16 21:57:35 +02:00
"ItemCount"
2024-08-16 20:42:11 +02:00
]
}
2024-09-16 20:22:12 +02: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-16 01:21:15 +02:00
"required" : [
2024-09-16 20:22:12 +02:00
"ItemsToGather"
2024-08-16 01:21:15 +02:00
]
}
2024-10-12 15:59:21 +02:00
} ,
{
"if" : {
"properties" : {
"InteractionType" : {
"anyOf" : [
{
"const" : "WaitForManualProgress"
} ,
{
"const" : "Instruction"
} ,
{
"const" : "Snipe"
}
]
}
}
} ,
"then" : {
"required" : [
"Comment"
]
}
2024-11-11 22:38:20 +01: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 20:22:12 +02:00
}
]
2024-05-25 23:51:37 +02:00
}
2024-08-16 01:21:15 +02:00
}
2024-05-25 23:51:37 +02:00
}