Compare commits

..

No commits in common. "master" and "feat/astro" have entirely different histories.

89 changed files with 527 additions and 1778 deletions

View File

@ -1,5 +1,5 @@
<Project>
<PropertyGroup>
<Version>3.10</Version>
<Version>3.9</Version>
</PropertyGroup>
</Project>

View File

@ -76,10 +76,18 @@
"Microsoft.SourceLink.Common": "1.1.1"
}
},
"System.Text.Encodings.Web": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ=="
},
"System.Text.Json": {
"type": "Transitive",
"resolved": "8.0.5",
"contentHash": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg=="
"resolved": "8.0.4",
"contentHash": "bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==",
"dependencies": {
"System.Text.Encodings.Web": "8.0.0"
}
},
"ecommons": {
"type": "Project"
@ -93,7 +101,7 @@
"questionable.model": {
"type": "Project",
"dependencies": {
"System.Text.Json": "[8.0.5, )"
"System.Text.Json": "[8.0.4, )"
}
}
}

View File

@ -2,15 +2,23 @@
"version": 1,
"dependencies": {
"net8.0-windows7.0": {
"System.Text.Encodings.Web": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ=="
},
"System.Text.Json": {
"type": "Transitive",
"resolved": "8.0.5",
"contentHash": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg=="
"resolved": "8.0.4",
"contentHash": "bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==",
"dependencies": {
"System.Text.Encodings.Web": "8.0.0"
}
},
"questionable.model": {
"type": "Project",
"dependencies": {
"System.Text.Json": "[8.0.5, )"
"System.Text.Json": "[8.0.4, )"
}
}
}

View File

@ -26,7 +26,7 @@
</PackageReference>
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.9.2" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.9.2" />
<PackageReference Include="System.Text.Json" Version="8.0.5" PrivateAssets="all" />
<PackageReference Include="System.Text.Json" Version="8.0.4" PrivateAssets="all" />
</ItemGroup>
<ItemGroup>

View File

@ -42,9 +42,6 @@ internal static class DialogueChoiceExtensions
.AsSyntaxNodeOrToken(),
Assignment(nameof(DialogueChoice.DataId), dialogueChoice.DataId,
emptyChoice.DataId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(DialogueChoice.SpecialCondition), dialogueChoice.SpecialCondition,
emptyChoice.SpecialCondition)
.AsSyntaxNodeOrToken()))));
}
}

View File

@ -68,9 +68,9 @@
},
"System.Text.Json": {
"type": "Direct",
"requested": "[8.0.5, )",
"resolved": "8.0.5",
"contentHash": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg==",
"requested": "[8.0.4, )",
"resolved": "8.0.4",
"contentHash": "bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==",
"dependencies": {
"Microsoft.Bcl.AsyncInterfaces": "8.0.0",
"System.Buffers": "4.5.1",
@ -264,7 +264,7 @@
"questionable.model": {
"type": "Project",
"dependencies": {
"System.Text.Json": "[8.0.5, )"
"System.Text.Json": "[8.0.4, )"
}
}
}

View File

@ -22,10 +22,15 @@
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
419
]
"NearPosition": {
"Position": {
"X": 202.38037,
"Y": -5.3999662,
"Z": -58.9151
},
"TerritoryId": 419,
"MaximumDistance": 100
}
}
}
}
@ -63,7 +68,7 @@
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
1,
null,
null,
null,
@ -86,12 +91,12 @@
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
2,
null,
null,
null,
null,
null,
64
null
]
}
}
@ -105,15 +110,7 @@
},
"TerritoryId": 419,
"InteractionType": "Interact",
"StopDistance": 4,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
"StopDistance": 4
}
]
},

View File

@ -19,12 +19,10 @@
"AetheryteShortcut": "South Shroud - Quarrymill",
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
419
]
"InSameTerritory": true
}
}
},
"Comment": "This quest have solo duty!"
}
]
},

View File

@ -22,10 +22,7 @@
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
419
]
"InSameTerritory": true
}
}
}

View File

@ -22,10 +22,15 @@
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
419
]
"NearPosition": {
"Position": {
"X": 202.38037,
"Y": -5.3999662,
"Z": -58.9151
},
"MaximumDistance": 100,
"TerritoryId": 419
}
}
}
}

View File

@ -22,12 +22,18 @@
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
419
]
"NearPosition": {
"Position": {
"X": 199.93884,
"Y": -0.899981,
"Z": -48.722107
},
"MaximumDistance": 100,
"TerritoryId": 419
}
}
}
},
"Comment": "This quest have solo duty!"
}
]
},
@ -115,31 +121,11 @@
},
"StepIf": {
"CompletionQuestVariablesFlags": [
16,
16,
null,
null,
null,
null,
null,
128
]
}
}
},
{
"Position": {
"X": -2.1358607,
"Y": 45.631218,
"Z": -258.50027
},
"TerritoryId": 128,
"InteractionType": "WalkTo",
"AethernetShortcut": [
"[Limsa Lominsa] Fishermens' Guild",
"[Limsa Lominsa] Marauders' Guild"
],
"SkipConditions": {
"StepIf": {
"InTerritory": [
128
]
}
@ -155,14 +141,39 @@
"TerritoryId": 128,
"InteractionType": "Interact",
"StopDistance": 5,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
"AetheryteShortcut": "Limsa Lominsa",
"AethernetShortcut": [
"[Limsa Lominsa] Fishermens' Guild",
"[Limsa Lominsa] Marauders' Guild"
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
},
"Comment": "You will probably need to do this manually navmesh doesn't work inside Coral Tower"
},
{
"DataId": 1003282,
"Position": {
"X": -3.03656,
"Y": 48.168007,
"Z": -261.70752
},
"TerritoryId": 128,
"InteractionType": "Interact",
"StopDistance": 5,
"AetheryteShortcut": "Limsa Lominsa",
"AethernetShortcut": [
"[Limsa Lominsa] Fishermens' Guild",
"[Limsa Lominsa] Marauders' Guild"
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
},
"Comment": "You will probably need to do this manually navmesh doesn't work inside Coral Tower"
},
{
"DataId": 1002680,
@ -174,14 +185,16 @@
"TerritoryId": 128,
"InteractionType": "Interact",
"StopDistance": 5,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
"AetheryteShortcut": "Limsa Lominsa",
"AethernetShortcut": [
"[Limsa Lominsa] Aetheryte Plaza",
"[Limsa Lominsa] Marauders' Guild"
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
@ -202,7 +215,13 @@
"AethernetShortcut": [
"[Limsa Lominsa] Aetheryte Plaza",
"[Limsa Lominsa] Marauders' Guild"
]
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
},
"Comment": "Do it manually, navmesh can't get inside the building it seem.\nOtherwise it will run into wall."
}
]
},
@ -217,7 +236,18 @@
"Z": -160.47919
},
"TerritoryId": 128,
"InteractionType": "SinglePlayerDuty"
"InteractionType": "SinglePlayerDuty",
"StopDistance": 3,
"AetheryteShortcut": "Limsa Lominsa",
"AethernetShortcut": [
"[Limsa Lominsa] Aetheryte Plaza",
"[Limsa Lominsa] Marauders' Guild"
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},

View File

@ -22,12 +22,18 @@
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
419
]
"NearPosition": {
"Position": {
"X": 202.38037,
"Y": -5.3999662,
"Z": -58.9151
},
"TerritoryId": 419,
"MaximumDistance": 100
}
}
}
},
"Comment": "This Quest have solo duty!"
}
]
},

View File

@ -22,10 +22,15 @@
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
419
]
"NearPosition": {
"Position": {
"X": 202.38037,
"Y": -5.3999662,
"Z": -58.9151
},
"TerritoryId": 419,
"MaximumDistance": 100
}
}
}
}

View File

@ -22,12 +22,18 @@
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
419
]
"NearPosition": {
"Position": {
"X": 199.93884,
"Y": -0.899981,
"Z": -48.722107
},
"TerritoryId": 419,
"MaximumDistance": 100
}
}
}
},
"Comment": "This quest have solo duty!"
}
]
},
@ -78,13 +84,42 @@
"TerritoryId": 155,
"InteractionType": "SinglePlayerDuty",
"StopDistance": 4,
"AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead"
"AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead",
"Comment": "Do the solo duty!"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1014960,
"Position": {
"X": 262.83667,
"Y": 359.1351,
"Z": -688.3192
},
"TerritoryId": 155,
"InteractionType": "WalkTo",
"Fly": true,
"AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead",
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
},
"StepIf": {
"NearPosition": {
"Position": {
"X": 262.83667,
"Y": 359.1351,
"Z": -688.3192
},
"MaximumDistance": 100,
"TerritoryId": 155
}
}
}
},
{
"DataId": 1014960,
"Position": {
@ -107,6 +142,34 @@
{
"Sequence": 4,
"Steps": [
{
"DataId": 1014960,
"Position": {
"X": 259.72375,
"Y": 359.09564,
"Z": -689.93665
},
"TerritoryId": 155,
"InteractionType": "WalkTo",
"Fly": true,
"AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead",
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
},
"StepIf": {
"NearPosition": {
"Position": {
"X": 259.72375,
"Y": 359.09564,
"Z": -689.93665
},
"MaximumDistance": 100,
"TerritoryId": 155
}
}
}
},
{
"DataId": 1014961,
"Position": {

View File

@ -19,10 +19,15 @@
"AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead",
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
419
]
"NearPosition": {
"Position": {
"X": 204.60815,
"Y": 307.87106,
"Z": 414.63342
},
"TerritoryId": 155,
"MaximumDistance": 5
}
}
}
}

View File

@ -22,10 +22,15 @@
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
419
]
"NearPosition": {
"Position": {
"X": 202.38037,
"Y": -5.3999662,
"Z": -58.9151
},
"TerritoryId": 419,
"MaximumDistance": 100
}
}
}
}

View File

@ -22,10 +22,15 @@
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
419
]
"NearPosition": {
"Position": {
"X": 202.38037,
"Y": -5.3999662,
"Z": -58.9151
},
"TerritoryId": 419,
"MaximumDistance": 100
}
}
}
}
@ -68,14 +73,18 @@
"InteractionType": "Action",
"StopDistance": 4,
"Action": "Aspected Benefic",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
1,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 1015171,
@ -88,14 +97,18 @@
"InteractionType": "Action",
"StopDistance": 4,
"Action": "Aspected Benefic",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
2,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 1015170,
@ -107,15 +120,7 @@
"TerritoryId": 397,
"InteractionType": "Action",
"StopDistance": 4,
"Action": "Aspected Benefic",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
"Action": "Aspected Benefic"
}
]
},

View File

@ -22,12 +22,18 @@
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
419
]
"NearPosition": {
"Position": {
"X": 202.38037,
"Y": -5.3999662,
"Z": -58.9151
},
"TerritoryId": 419,
"MaximumDistance": 100
}
}
}
},
"Comment": "This quest have solo duty!"
}
]
},
@ -68,14 +74,18 @@
"InteractionType": "Action",
"StopDistance": 4,
"Action": "Aspected Benefic",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
1,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 1015092,
@ -88,14 +98,18 @@
"InteractionType": "Action",
"StopDistance": 4,
"Action": "Aspected Benefic",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
2,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 1015093,
@ -107,15 +121,7 @@
"TerritoryId": 398,
"InteractionType": "Action",
"StopDistance": 4,
"Action": "Aspected Benefic",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
"Action": "Aspected Benefic"
}
]
},
@ -160,7 +166,8 @@
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
},
"Comment": "Do the solo duty!"
}
]
},

View File

@ -22,10 +22,15 @@
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
419
]
"NearPosition": {
"Position": {
"X": 202.38037,
"Y": -5.3999662,
"Z": -58.9151
},
"TerritoryId": 419,
"MaximumDistance": 100
}
}
}
}

View File

@ -22,12 +22,18 @@
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
419
]
"NearPosition": {
"Position": {
"X": 202.38037,
"Y": -5.3999662,
"Z": -58.9151
},
"TerritoryId": 419,
"MaximumDistance": 100
}
}
}
},
"Comment": "This quest have solo duty!"
}
]
},
@ -119,7 +125,8 @@
"AethernetShortcutIf": {
"InSameTerritory": true
}
}
},
"Comment": "Do the Solo Duty!"
}
]
},

View File

@ -1,47 +0,0 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1012222,
"Position": {
"X": 202.38037,
"Y": -5.3999662,
"Z": -58.9151
},
"TerritoryId": 419,
"InteractionType": "AcceptQuest",
"StopDistance": 5,
"AetheryteShortcut": "Ishgard",
"AethernetShortcut": [
"[Ishgard] Aetheryte Plaza",
"[Ishgard] Athenaeum Astrologicum"
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
419
]
}
},
"DialogueChoices": [
{
"Type": "YesNo",
"Prompt": "TEXT_JOBAST299_02123_Q1_000_000",
"Yes": true
},
{
"Type": "YesNo",
"Prompt": "TEXT_JOBAST299_02123_Q2_000_000",
"Yes": true
}
]
}
]
}
]
}

View File

@ -1,141 +0,0 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1009813,
"Position": {
"X": 55.436035,
"Y": 31.187548,
"Z": -763.42413
},
"TerritoryId": 156,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "Mor Dhona",
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1009828,
"Position": {
"X": 64.95764,
"Y": 20.487333,
"Z": -641.01624
},
"TerritoryId": 156,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1009831,
"Position": {
"X": -58.487915,
"Y": 3.4366195,
"Z": -645.655
},
"TerritoryId": 156,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1009835,
"Position": {
"X": -103.379944,
"Y": -1.3236009,
"Z": -615.9304
},
"TerritoryId": 156,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [
3565,
4619,
5044
]
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1009835,
"Position": {
"X": -103.379944,
"Y": -1.3236009,
"Z": -615.9304
},
"TerritoryId": 156,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 5,
"Steps": [
{
"DataId": 2004633,
"Position": {
"X": -98.74121,
"Y": -0.015319824,
"Z": -616.5408
},
"TerritoryId": 156,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 6,
"Steps": [
{
"DataId": 1009839,
"Position": {
"X": -95.780945,
"Y": -0.42092213,
"Z": -625.6962
},
"TerritoryId": 156,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1006530,
"Position": {
"X": 21.927185,
"Y": 20.746975,
"Z": -682.06305
},
"TerritoryId": 156,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -1,166 +0,0 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1009812,
"Position": {
"X": 74.08252,
"Y": 30.549389,
"Z": -720.9735
},
"TerritoryId": 156,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "Mor Dhona",
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": 26.405773,
"Y": 29.49983,
"Z": -767.3998
},
"TerritoryId": 156,
"InteractionType": "WalkTo",
"Fly": true
},
{
"Position": {
"X": 25.629164,
"Y": 28.999998,
"Z": -823.2204
},
"TerritoryId": 156,
"InteractionType": "WalkTo"
},
{
"DataId": 1001304,
"Position": {
"X": 25.589355,
"Y": 29,
"Z": -825.37573
},
"TerritoryId": 156,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2004628,
"Position": {
"X": 50.614136,
"Y": 31.143677,
"Z": -748.40924
},
"TerritoryId": 156,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 2004631,
"Position": {
"X": -127.55017,
"Y": -1.9379272,
"Z": -638.4833
},
"TerritoryId": 156,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 4,
"Steps": [
{
"Position": {
"X": -165.20372,
"Y": 11.28438,
"Z": -619.29504
},
"TerritoryId": 156,
"InteractionType": "WalkTo",
"Fly": true
},
{
"DataId": 2004629,
"Position": {
"X": -166.79645,
"Y": 12.283508,
"Z": -619.8978
},
"TerritoryId": 156,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 5,
"Steps": [
{
"DataId": 1009817,
"Position": {
"X": -130.1748,
"Y": -0.85852593,
"Z": -645.2583
},
"TerritoryId": 156,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 6,
"Steps": [
{
"DataId": 1006530,
"Position": {
"X": 21.927185,
"Y": 20.746975,
"Z": -682.06305
},
"TerritoryId": 156,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1009813,
"Position": {
"X": 55.436035,
"Y": 31.187548,
"Z": -763.42413
},
"TerritoryId": 156,
"InteractionType": "CompleteQuest",
"Fly": true,
"NextQuestId": 50
}
]
}
]
}

View File

@ -1,212 +0,0 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1009813,
"Position": {
"X": 55.436035,
"Y": 31.187548,
"Z": -763.42413
},
"TerritoryId": 156,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "Mor Dhona",
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1009812,
"Position": {
"X": 74.08252,
"Y": 30.549389,
"Z": -720.9735
},
"TerritoryId": 156,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1006530,
"Position": {
"X": 21.927185,
"Y": 20.746975,
"Z": -682.06305
},
"TerritoryId": 156,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1009825,
"Position": {
"X": 86.07605,
"Y": 28.34813,
"Z": -622.18665
},
"StopDistance": 0.5,
"TerritoryId": 156,
"InteractionType": "Interact",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"Position": {
"X": 30.917934,
"Y": 20.495003,
"Z": -656.1909
},
"TerritoryId": 156,
"InteractionType": "WalkTo",
"Fly": true,
"$": "Rising Stones Door",
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
}
}
},
{
"DataId": 1009826,
"Position": {
"X": 29.160034,
"Y": 21.252728,
"Z": -642.51166
},
"TerritoryId": 156,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
},
{
"Position": {
"X": 30.917934,
"Y": 20.495003,
"Z": -656.1909
},
"TerritoryId": 156,
"InteractionType": "WalkTo",
"Mount": true,
"$": "Rising Stones Door"
},
{
"Position": {
"X": 18.883974,
"Y": 53.583996,
"Z": -702.24194
},
"TerritoryId": 156,
"InteractionType": "WalkTo",
"Fly": true,
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 1009823,
"Position": {
"X": 16.983276,
"Y": 53.614998,
"Z": -703.3341
},
"TerritoryId": 156,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 1009824,
"Position": {
"X": 22.262878,
"Y": 28.999968,
"Z": -780.85
},
"TerritoryId": 156,
"InteractionType": "Interact",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1009813,
"Position": {
"X": 55.436035,
"Y": 31.187548,
"Z": -763.42413
},
"TerritoryId": 156,
"InteractionType": "CompleteQuest",
"Fly": true,
"NextQuestId": 100
}
]
}
]
}

View File

@ -53,8 +53,7 @@
},
"TerritoryId": 614,
"InteractionType": "Snipe",
"Fly": true,
"Comment": "Snipe Namazu"
"Fly": true
}
]
},
@ -70,8 +69,7 @@
},
"TerritoryId": 614,
"InteractionType": "Snipe",
"Fly": true,
"Comment": "Snipe Namazu"
"Fly": true
}
]
},

View File

@ -32,7 +32,8 @@
"MaximumDistance": 100
}
}
}
},
"Comment": "This quest have solo duty!"
}
]
},
@ -190,7 +191,8 @@
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
},
"Comment": "Do the Solo duty!"
}
]
},

View File

@ -32,7 +32,8 @@
"MaximumDistance": 20
}
}
}
},
"Comment": "This quest have solo duty!"
}
]
},
@ -48,6 +49,7 @@
},
"TerritoryId": 628,
"InteractionType": "Interact",
"StopDistance": 5,
"AetheryteShortcut": "Kugane",
"SkipConditions": {
"AetheryteShortcutIf": {
@ -105,7 +107,8 @@
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
},
"Comment": "Do the solo Duty!"
}
]
},

View File

@ -1,103 +0,0 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1024791,
"Position": {
"X": 31.60144,
"Y": 0.26575702,
"Z": 28.915894
},
"TerritoryId": 759,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "Doman Enclave",
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1006530,
"Position": {
"X": 21.927185,
"Y": 20.746975,
"Z": -682.06305
},
"TerritoryId": 156,
"InteractionType": "Interact",
"AetheryteShortcut": "Mor Dhona"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1025287,
"Position": {
"X": 64.34729,
"Y": 31.199963,
"Z": -754.0246
},
"TerritoryId": 156,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 2009436,
"Position": {
"X": 70.05408,
"Y": 30.746826,
"Z": -722.86566
},
"TerritoryId": 156,
"InteractionType": "CompleteQuest",
"Fly": true,
"DialogueChoices": [
{
"Type": "YesNo",
"Prompt": "TEXT_STMBDY501_03086_Q1_000_091",
"Yes": true
},
{
"Type": "List",
"Prompt": "TEXT_STMBDY501_03086_Q2_000_097",
"Answer": "TEXT_STMBDY501_03086_A2_000_100"
},
{
"Type": "List",
"Prompt": "TEXT_STMBDY501_03086_Q3_000_118",
"Answer": "TEXT_STMBDY501_03086_A3_000_119"
},
{
"Type": "List",
"Prompt": "TEXT_STMBDY501_03086_Q4_000_134",
"Answer": "TEXT_STMBDY501_03086_A4_000_136"
},
{
"Type": "List",
"Prompt": "TEXT_STMBDY501_03086_Q5_000_156",
"Answer": "TEXT_STMBDY501_03086_A5_000_158"
}
],
"NextQuestId": 3087
}
]
}
]
}

View File

@ -1,118 +0,0 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1025330,
"Position": {
"X": 64.83557,
"Y": 30.6188,
"Z": -722.3774
},
"StopDistance": 7,
"TerritoryId": 156,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "Mor Dhona",
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1006530,
"Position": {
"X": 21.927185,
"Y": 20.746975,
"Z": -682.06305
},
"TerritoryId": 156,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1009813,
"Position": {
"X": 55.436035,
"Y": 31.187548,
"Z": -763.42413
},
"TerritoryId": 156,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"Position": {
"X": 51.799374,
"Y": 50,
"Z": -774.0067
},
"TerritoryId": 156,
"InteractionType": "WalkTo",
"Fly": true
},
{
"DataId": 1018433,
"Position": {
"X": 50.766724,
"Y": 50,
"Z": -772.3964
},
"TerritoryId": 156,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1025287,
"Position": {
"X": 64.34729,
"Y": 31.199963,
"Z": -754.0246
},
"TerritoryId": 156,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1024791,
"Position": {
"X": 31.60144,
"Y": 0.26575702,
"Z": 28.915894
},
"TerritoryId": 759,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Doman Enclave",
"NextQuestId": 3141
}
]
}
]
}

View File

@ -1,57 +0,0 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1024791,
"Position": {
"X": 31.60144,
"Y": 0.26575702,
"Z": 28.915894
},
"TerritoryId": 759,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "Doman Enclave",
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1024793,
"Position": {
"X": 66.666626,
"Y": -7.579447E-09,
"Z": -59.67804
},
"TerritoryId": 759,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1024791,
"Position": {
"X": 31.60144,
"Y": 0.26575702,
"Z": 28.915894
},
"TerritoryId": 759,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -49,8 +49,7 @@
"InteractionType": "Say",
"ChatMessage": {
"Key": "TEXT_LUCKMB109_03310_SYSTEM_000_060"
},
"DelaySecondsAtStart": 6
}
}
]
},
@ -68,8 +67,7 @@
"InteractionType": "Say",
"ChatMessage": {
"Key": "TEXT_LUCKMB109_03310_SYSTEM_000_070"
},
"DelaySecondsAtStart": 8
}
}
]
},

View File

@ -70,12 +70,6 @@
"ExcelSheet": "GimmickYesNo",
"Prompt": 142,
"Yes": true
},
{
"Type": "YesNo",
"ExcelSheet": "GimmickYesNo",
"Prompt": 137,
"Yes": true
}
]
}

View File

@ -55,7 +55,7 @@
"Steps": [
{
"TerritoryId": 351,
"InteractionType": "None",
"InteractionType": "WaitForManualProgress",
"Comment": "Credits"
}
]

View File

@ -51,7 +51,7 @@
},
"StopDistance": 0.5,
"TerritoryId": 960,
"InteractionType": "Combat",
"InteractionType": "WaitForManualProgress",
"EnemySpawnType": "AutoOnEnterArea",
"KillEnemyDataIds": [
14044

View File

@ -1,6 +1,7 @@
{
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Kaiser",
"Author": "liza",
"Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
@ -29,43 +30,11 @@
{
"Sequence": 1,
"Steps": [
{
"DataId": 1044569,
"Position": {
"X": -385.6718,
"Y": -151.67168,
"Z": -261.28027
},
"TerritoryId": 959,
"InteractionType": "Interact",
"AetheryteShortcut": "Mare Lamentorum - Bestways Burrow",
"StopDistance": 5,
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"NearPosition": {
"Position": {
"X": -385.6718,
"Y": -151.67168,
"Z": -261.28027
},
"MaximumDistance": 30,
"TerritoryId": 959
}
}
}
}
]
},
{
"Sequence": 255,
"Steps": [
{
"TerritoryId": 959,
"InteractionType": "Craft",
"ItemId": 38861,
"ItemCount": 2
},
{
"Position": {
"X": -201.42024,
@ -73,22 +42,7 @@
"Z": -273.68756
},
"TerritoryId": 959,
"InteractionType": "WalkTo",
"AetheryteShortcut": "Mare Lamentorum - Bestways Burrow",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"NearPosition": {
"Position": {
"X": -201.42024,
"Y": -49.149708,
"Z": -273.68756
},
"MaximumDistance": 100,
"TerritoryId": 959
}
}
}
"InteractionType": "WalkTo"
},
{
"DataId": 1044403,

View File

@ -188,15 +188,14 @@
"Z": 94.77368
},
"TerritoryId": 958,
"InteractionType": "Combat",
"InteractionType": "Instruction",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [
14079
],
"CombatItemUse": {
"ItemId": 2003231,
"Condition": "Incapacitated"
},
"Comment": "TODO Needs item use?",
"ItemId": 2003231,
"ItemUseHealthMaxPercent": 10,
"CompletionQuestVariablesFlags": [
null,
null,
@ -280,15 +279,14 @@
"Z": 396.96338
},
"TerritoryId": 958,
"InteractionType": "Combat",
"InteractionType": "Instruction",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [
14080
],
"CombatItemUse": {
"ItemId": 2003231,
"Condition": "Incapacitated"
},
"Comment": "TODO Needs item use?",
"ItemId": 2003231,
"ItemUseHealthMaxPercent": 10,
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,

View File

@ -65,19 +65,6 @@
"Type": "YesNo",
"Prompt": "TEXT_AKTKMB115_04394_Q1_000_042",
"Yes": true
},
{
"Type": "List",
"ExcelSheet": "ContentTalk",
"Prompt": 254,
"Answer": 247,
"SpecialCondition": "NoDutyActions"
},
{
"Type": "List",
"ExcelSheet": "ContentTalk",
"Prompt": 254,
"Answer": 248
}
],
"AetheryteShortcut": "Garlemald - Camp Broken Glass",

View File

@ -37,23 +37,10 @@
"Sequence": 2,
"Steps": [
{
"Position": {
"X": 206.0426,
"Y": 20.561113,
"Z": 629.14465
},
"DataId": 1039998,
"TerritoryId": 961,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"KillEnemyDataIds": [
13447, 13448, 13449
],
"CombatItemUse": {
"ItemId": 2003232,
"Condition": "Health%",
"Value": 50
}
"InteractionType": "WaitForManualProgress",
"Comment": "Capture Mobs with less than 50% HP"
}
]
},

View File

@ -32,16 +32,6 @@
"InteractionType": "AcceptQuest",
"PickUpQuestId": 4507
},
{
"Position": {
"X": -109.12761,
"Y": -34.0357,
"Z": 397.6694
},
"TerritoryId": 961,
"InteractionType": "WalkTo",
"$": "Avoids combat"
},
{
"DataId": 1040073,
"Position": {

View File

@ -44,22 +44,19 @@
"Y": -18.777306,
"Z": 527.2946
},
"StopDistance": 0.5,
"TerritoryId": 958,
"InteractionType": "Combat",
"EnemySpawnType": "AutoOnEnterArea",
"KillEnemyDataIds": [
14107
],
"InteractionType": "WaitForManualProgress",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
null,
null,
null,
null,
null,
128
],
"$.0": "0 0 0 0 0 0 -> 16 64 0 0 0 128"
"Comment": "Use the mount's abilities to kill the drones.",
"$.0": "0 0 0 0 0 0 -> 16 64 0 0 0 128",
"$.1": "can't find any currently extant method of automating this - could add the actions, but it's combat with the actions specifically, repeat use on targets"
},
{
"Position": {
@ -67,21 +64,9 @@
"Y": -18.937208,
"Z": 338.0957
},
"StopDistance": 0.5,
"TerritoryId": 958,
"InteractionType": "Combat",
"EnemySpawnType": "AutoOnEnterArea",
"KillEnemyDataIds": [
14107
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
"InteractionType": "WaitForManualProgress",
"Comment": "Use the mount's abilities to kill the drones."
}
]
},
@ -89,12 +74,6 @@
"Sequence": 255,
"Steps": [
{
"Position": {
"X": 135.85095,
"Y": -17.135998,
"Z": 567.8645
},
"StopDistance": 2000,
"TerritoryId": 958,
"InteractionType": "None",
"Mount": false
@ -108,8 +87,7 @@
},
"TerritoryId": 958,
"InteractionType": "CompleteQuest",
"Fly": true,
"NextQuestId": 4218
"Fly": true
}
]
}

View File

@ -30,12 +30,12 @@
"TerritoryId": 958,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
null,
1,
null,
null,
null,
128
],
"$": "0 0 0 0 0 0 -> 16 1 0 0 0 128"
},
@ -49,12 +49,12 @@
"TerritoryId": 958,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
null,
16,
null,
null,
null,
32
],
"$": "16 1 0 0 0 128 -> 32 17 0 0 0 160"
},
@ -67,15 +67,7 @@
},
"TerritoryId": 958,
"InteractionType": "Interact",
"$": "32 17 0 0 0 160 -> 0 0 0 0 0 0",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
"$": "32 17 0 0 0 160 -> 0 0 0 0 0 0"
}
]
},

View File

@ -67,15 +67,7 @@
},
"TerritoryId": 958,
"InteractionType": "Interact",
"$": "33 1 16 0 0 192 -> 0 0 0 0 0 0",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
"$": "33 1 16 0 0 192 -> 0 0 0 0 0 0"
}
]
},

View File

@ -75,15 +75,7 @@
"KillEnemyDataIds": [
14104
],
"$": "33 16 16 0 0 192 -> 0 0 0 0 0 0",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
"$": "33 16 16 0 0 192 -> 0 0 0 0 0 0"
}
]
},

View File

@ -45,12 +45,12 @@
"TerritoryId": 958,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
null,
128,
null,
null,
null,
64
],
"$": "0 0 0 0 0 0 -> 0 128 0 0 0 64"
},
@ -64,12 +64,12 @@
"TerritoryId": 958,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
null,
64,
null,
null,
null,
32
],
"$": "0 128 0 0 0 64 -> 0 192 0 0 0 96"
},
@ -83,12 +83,12 @@
"TerritoryId": 958,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
null,
32,
null,
null,
null,
16
],
"$": "0 192 0 0 0 96 -> 0 224 0 0 0 112"
},

View File

@ -48,12 +48,12 @@
],
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
null,
null,
null,
null,
null,
64
],
"$": "0 0 0 0 0 0 -> 0 0 0 128 0 64"
},
@ -74,12 +74,12 @@
}
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
null,
null,
null,
null,
null,
32
],
"$": "0 0 0 128 0 64 -> 0 0 0 192 0 96"
},
@ -91,15 +91,7 @@
"Z": -292.98853
},
"TerritoryId": 958,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
"InteractionType": "Interact"
}
]
},

View File

@ -21,23 +21,15 @@
"Sequence": 1,
"Steps": [
{
"DataId": 13468,
"Position": {
"X": -159.59418,
"Y": 10.8,
"Z": -468.8335
},
"StopDistance": 0.5,
"TerritoryId": 958,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"KillEnemyDataIds": [
13468
],
"CombatItemUse": {
"ItemId": 2003202,
"Condition": "Health%",
"Value": 40
},
"InteractionType": "WaitForManualProgress",
"Comment": "Use item 2003202 on 13468 after \"weakening\"",
"Fly": true
}
]

View File

@ -72,7 +72,6 @@
},
"TerritoryId": 958,
"InteractionType": "Interact",
"Mount": true,
"CompletionQuestVariablesFlags": [
null,
null,
@ -92,15 +91,7 @@
},
"TerritoryId": 958,
"InteractionType": "Interact",
"$": "49 16 16 0 0 224 -> 0 16 0 0 0 0",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
"$": "49 16 16 0 0 224 -> 0 16 0 0 0 0"
}
]
},

View File

@ -27,28 +27,6 @@
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": 545.40717,
"Y": -36.616177,
"Z": -267.17505
},
"TerritoryId": 958,
"InteractionType": "WalkTo",
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
},
"$": "Without this step, it'll interact with the NPC in the wagon through the wall"
},
{
"DataId": 1037766,
"Position": {
@ -59,12 +37,12 @@
"TerritoryId": 958,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
null,
null,
null,
null,
null,
64
],
"$": "0 0 0 0 0 0 -> 1 32 0 0 0 64"
},
@ -85,12 +63,12 @@
}
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
null,
null,
null,
null,
null,
128
],
"$": "1 32 0 0 0 64 -> 2 16 0 0 0 192"
},
@ -102,15 +80,7 @@
"Z": -175.21942
},
"TerritoryId": 958,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
"InteractionType": "Interact"
}
]
},

View File

@ -45,8 +45,7 @@
"Z": -296.37604
},
"TerritoryId": 958,
"InteractionType": "Snipe",
"Comment": "Snipe Magitek Colossi"
"InteractionType": "Interact"
}
]
},
@ -61,7 +60,7 @@
"Z": -299.36682
},
"TerritoryId": 958,
"InteractionType": "Interact"
"InteractionType": "Snipe"
}
]
},

View File

@ -81,15 +81,7 @@
},
"TerritoryId": 958,
"InteractionType": "UseItem",
"ItemId": 2003210,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
"ItemId": 2003210
}
]
},

View File

@ -20,29 +20,6 @@
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": -189.97284,
"Y": 15.907461,
"Z": -169.83481
},
"TerritoryId": 958,
"InteractionType": "WalkTo",
"Fly": true,
"SkipConditions": {
"StepIf": {
"Flying": "Locked",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 2012054,
"Position": {
@ -53,15 +30,17 @@
"TerritoryId": 958,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
null,
null,
null,
null,
null,
128
],
"$.0": "0 0 0 0 0 0 -> 1 16 0 0 0 128",
"Fly": true
"AetheryteShortcut": "Garlemald - Tertium",
"Fly": true,
"$.1": "flight path gets stuck from camp BG, not so from tertium; walkto would probably be cleaner but this seems intuitive."
},
{
"DataId": 2012055,
@ -73,61 +52,15 @@
"TerritoryId": 958,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
null,
null,
null,
null,
null,
64
],
"Fly": true,
"$": "1 16 0 0 0 128 -> 2 32 0 0 0 192"
},
{
"Position": {
"X": -223.12543,
"Y": 10.826223,
"Z": -368.8611
},
"TerritoryId": 958,
"InteractionType": "WalkTo",
"SkipConditions": {
"StepIf": {
"Flying": "Unlocked",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"Position": {
"X": -140.08179,
"Y": 16.226164,
"Z": -310.9478
},
"TerritoryId": 958,
"InteractionType": "WalkTo",
"Fly": true,
"SkipConditions": {
"StepIf": {
"Flying": "Locked",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2012056,
"Position": {
@ -138,15 +71,15 @@
"TerritoryId": 958,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
null,
null,
null,
null,
null,
32
],
"$.0": "2 32 0 0 0 192 -> 3 48 0 0 0 224",
"Fly": true
"$.1": "fly also gets stuck here"
},
{
"DataId": 2012057,
@ -155,19 +88,10 @@
"Y": 16.494995,
"Z": -413.016
},
"StopDistance": 1,
"TerritoryId": 958,
"InteractionType": "Interact",
"$.0": "3 48 0 0 0 224 -> 0 64 0 0 0 0",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
"$.1": "no fly here, tries and fails to land on the railing: can't interact while flying"
}
]
},

View File

@ -53,8 +53,7 @@
},
"TerritoryId": 958,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Garlemald - Camp Broken Glass",
"NextQuestId": 4500
"AetheryteShortcut": "Garlemald - Camp Broken Glass"
}
]
}

View File

@ -71,8 +71,7 @@
"Prompt": "TEXT_AKTKZC103_04500_Q2_000_000",
"Answer": "TEXT_AKTKZC103_04500_A2_000_001"
}
],
"NextQuestId": 4501
]
}
]
}

View File

@ -83,8 +83,7 @@
},
"TerritoryId": 958,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Garlemald - Tertium",
"NextQuestId": 4504
"AetheryteShortcut": "Garlemald - Tertium"
}
]
}

View File

@ -77,8 +77,7 @@
"Prompt": "TEXT_AKTKZD103_04504_Q2_000_000",
"Answer": "TEXT_AKTKZD103_04504_A2_000_001"
}
],
"NextQuestId": 4505
]
}
]
}

View File

@ -12,7 +12,6 @@
"Y": 23.164677,
"Z": -415.36584
},
"StopDistance": 7,
"TerritoryId": 958,
"InteractionType": "AcceptQuest",
"Fly": true,
@ -87,8 +86,7 @@
"Answer": "TEXT_AKTKZD104_04505_A1_000_002"
}
],
"AetheryteShortcut": "Garlemald - Tertium",
"NextQuestId": 4506
"AetheryteShortcut": "Garlemald - Tertium"
}
]
}

View File

@ -12,7 +12,6 @@
"Y": -36.65,
"Z": -132.64673
},
"StopDistance": 5,
"TerritoryId": 958,
"InteractionType": "AcceptQuest",
"DialogueChoices": [

View File

@ -2,15 +2,23 @@
"version": 1,
"dependencies": {
"net8.0-windows7.0": {
"System.Text.Encodings.Web": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ=="
},
"System.Text.Json": {
"type": "Transitive",
"resolved": "8.0.5",
"contentHash": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg=="
"resolved": "8.0.4",
"contentHash": "bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==",
"dependencies": {
"System.Text.Encodings.Web": "8.0.0"
}
},
"questionable.model": {
"type": "Project",
"dependencies": {
"System.Text.Json": "[8.0.5, )"
"System.Text.Json": "[8.0.4, )"
}
}
}

View File

@ -617,29 +617,6 @@
]
}
},
"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": [
"Incapacitated",
"Health%"
]
},
"Value": {
"type": "integer"
}
},
"required": [
"ItemId",
"Condition"
]
},
"CombatDelaySecondsAtStart": {
"type": "number"
}
@ -1298,30 +1275,6 @@
"ItemsToGather"
]
}
},
{
"if": {
"properties": {
"InteractionType": {
"anyOf": [
{
"const": "WaitForManualProgress"
},
{
"const": "Instruction"
},
{
"const": "Snipe"
}
]
}
}
},
"then": {
"required": [
"Comment"
]
}
}
]
}

View File

@ -1,14 +0,0 @@
using System.Text.Json.Serialization;
using Questionable.Model.Questing.Converter;
namespace Questionable.Model.Questing;
public sealed class CombatItemUse
{
public uint ItemId { get; set; }
[JsonConverter(typeof(CombatItemUseConditionConverter))]
public ECombatItemUseCondition Condition { get; set; }
public int Value { get; set; }
}

View File

@ -1,13 +0,0 @@
using System.Collections.Generic;
using Questionable.Model.Common.Converter;
namespace Questionable.Model.Questing.Converter;
public sealed class CombatItemUseConditionConverter() : EnumConverter<ECombatItemUseCondition>(Values)
{
private static readonly Dictionary<ECombatItemUseCondition, string> Values = new()
{
{ ECombatItemUseCondition.Incapacitated, "Incapacitated" },
{ ECombatItemUseCondition.HealthPercent, "Health%" },
};
}

View File

@ -23,9 +23,4 @@ public sealed class DialogueChoice
/// If set, only applies when focusing the given target id.
/// </summary>
public uint? DataId { get; set; }
/// <summary>
/// Used for 'In from the Cold'.
/// </summary>
public string? SpecialCondition { get; set; }
}

View File

@ -1,8 +0,0 @@
namespace Questionable.Model.Questing;
public enum ECombatItemUseCondition
{
None,
Incapacitated,
HealthPercent,
}

View File

@ -67,7 +67,6 @@ public sealed class QuestStep
public EEnemySpawnType? EnemySpawnType { get; set; }
public List<uint> KillEnemyDataIds { get; set; } = [];
public List<ComplexCombatData> ComplexCombatData { get; set; } = [];
public CombatItemUse? CombatItemUse { get; set; }
public float? CombatDelaySecondsAtStart { get; set; }
public JumpDestination? JumpDestination { get; set; }

View File

@ -11,7 +11,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Text.Json" Version="8.0.5" />
<PackageReference Include="System.Text.Json" Version="8.0.4" />
</ItemGroup>

View File

@ -13,9 +13,9 @@
},
"System.Text.Json": {
"type": "Direct",
"requested": "[8.0.5, )",
"resolved": "8.0.5",
"contentHash": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg==",
"requested": "[8.0.4, )",
"resolved": "8.0.4",
"contentHash": "bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==",
"dependencies": {
"Microsoft.Bcl.AsyncInterfaces": "8.0.0",
"System.Buffers": "4.5.1",

View File

@ -65,11 +65,11 @@ internal sealed class CombatController : IDisposable
{
Stop("Starting combat");
var combatModule = _combatModules.FirstOrDefault(x => x.CanHandleFight(combatData));
var combatModule = _combatModules.FirstOrDefault(x => x.IsLoaded);
if (combatModule == null)
return false;
if (combatModule.Start(combatData))
if (combatModule.Start())
{
_currentFight = new CurrentFight
{
@ -364,7 +364,6 @@ internal sealed class CombatController : IDisposable
public required EEnemySpawnType SpawnType { get; init; }
public required List<uint> KillEnemyDataIds { get; init; }
public required List<ComplexCombatData> ComplexCombatDatas { get; init; }
public required CombatItemUse? CombatItemUse { get; init; }
public HashSet<int> CompletedComplexDatas { get; } = new();
}

View File

@ -4,9 +4,9 @@ namespace Questionable.Controller.CombatModules;
internal interface ICombatModule
{
bool CanHandleFight(CombatController.CombatData combatData);
bool IsLoaded { get; }
bool Start(CombatController.CombatData combatData);
bool Start();
bool Stop();

View File

@ -1,157 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Dalamud.Game.ClientState.Conditions;
using Dalamud.Game.ClientState.Objects.Types;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game;
using FFXIVClientStructs.FFXIV.Client.Game.Character;
using FFXIVClientStructs.FFXIV.Client.UI.Agent;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Questionable.Functions;
using Questionable.Model.Questing;
namespace Questionable.Controller.CombatModules;
internal sealed class ItemUseModule : ICombatModule
{
private readonly IServiceProvider _serviceProvider;
private readonly ICondition _condition;
private readonly ILogger<ItemUseModule> _logger;
private ICombatModule? _delegate;
private CombatController.CombatData? _combatData;
private bool _isDoingRotation;
private DateTime _continueAt;
public ItemUseModule(IServiceProvider serviceProvider, ICondition condition, ILogger<ItemUseModule> logger)
{
_serviceProvider = serviceProvider;
_condition = condition;
_logger = logger;
}
public bool CanHandleFight(CombatController.CombatData combatData)
{
if (combatData.CombatItemUse == null)
return false;
_delegate = _serviceProvider.GetRequiredService<IEnumerable<ICombatModule>>()
.Where(x => x is not ItemUseModule)
.FirstOrDefault(x => x.CanHandleFight(combatData));
_logger.LogInformation("ItemUse delegate: {Delegate}", _delegate?.GetType().Name);
return _delegate != null;
}
public bool Start(CombatController.CombatData combatData)
{
if (_delegate!.Start(combatData))
{
_combatData = combatData;
_isDoingRotation = true;
_continueAt = DateTime.Now;
return true;
}
return false;
}
public bool Stop()
{
if (_isDoingRotation)
{
_delegate!.Stop();
_isDoingRotation = false;
_combatData = null;
_delegate = null;
_continueAt = DateTime.Now;
}
return true;
}
public void Update(IGameObject nextTarget)
{
if (_delegate == null)
return;
if (_continueAt > DateTime.Now)
return;
if (_combatData?.CombatItemUse == null)
{
_delegate.Update(nextTarget);
return;
}
if (_combatData.KillEnemyDataIds.Contains(nextTarget.DataId) ||
_combatData.ComplexCombatDatas.Any(x => x.DataId == nextTarget.DataId))
{
if (_isDoingRotation)
{
unsafe
{
InventoryManager* inventoryManager = InventoryManager.Instance();
if (inventoryManager->GetInventoryItemCount(_combatData.CombatItemUse.ItemId) == 0)
{
_isDoingRotation = false;
_delegate.Stop();
return;
}
}
if (ShouldUseItem(nextTarget))
{
_isDoingRotation = false;
_delegate.Stop();
unsafe
{
AgentInventoryContext.Instance()->UseItem(_combatData.CombatItemUse.ItemId);
}
_continueAt = DateTime.Now.AddSeconds(2);
}
else
_delegate.Update(nextTarget);
}
else if (_condition[ConditionFlag.Casting])
{
// do nothing
DateTime alternativeContinueAt = DateTime.Now.AddSeconds(0.5);
if (alternativeContinueAt > _continueAt)
_continueAt = alternativeContinueAt;
}
else
{
_isDoingRotation = true;
_delegate.Start(_combatData);
}
}
else if (_isDoingRotation)
{
_delegate.Update(nextTarget);
}
}
private unsafe bool ShouldUseItem(IGameObject gameObject)
{
if (_combatData?.CombatItemUse == null)
return false;
if (gameObject is IBattleChara)
{
BattleChara* battleChara = (BattleChara*)gameObject.Address;
if (_combatData.CombatItemUse.Condition == ECombatItemUseCondition.Incapacitated)
return (battleChara->Flags2 & 128u) != 0;
if (_combatData.CombatItemUse.Condition == ECombatItemUseCondition.HealthPercent)
return (100f * battleChara->Health / battleChara->MaxHealth) < _combatData.CombatItemUse.Value;
}
return false;
}
public void MoveToTarget(IGameObject nextTarget) => _delegate!.MoveToTarget(nextTarget);
public bool CanAttack(IBattleNpc target) => _delegate!.CanAttack(target);
}

View File

@ -25,9 +25,9 @@ internal sealed class Mount128Module : ICombatModule
_gameFunctions = gameFunctions;
}
public bool CanHandleFight(CombatController.CombatData combatData) => _gameFunctions.GetMountId() == MountId;
public bool IsLoaded => _gameFunctions.GetMountId() == MountId;
public bool Start(CombatController.CombatData combatData) => true;
public bool Start() => true;
public bool Stop() => true;
@ -47,5 +47,5 @@ internal sealed class Mount128Module : ICombatModule
{
}
public bool CanAttack(IBattleNpc target) => target.DataId is 7504 or 7505 or 14107;
public bool CanAttack(IBattleNpc target) => target.DataId is 7504 or 7505;
}

View File

@ -32,20 +32,23 @@ internal sealed class RotationSolverRebornModule : ICombatModule, IDisposable
pluginInterface.GetIpcSubscriber<StateCommandType, object>("RotationSolverReborn.ChangeOperatingMode");
}
public bool CanHandleFight(CombatController.CombatData combatData)
public bool IsLoaded
{
try
get
{
_test.InvokeAction("Validate RSR is callable from Questionable");
return true;
}
catch (IpcError)
{
return false;
try
{
_test.InvokeAction("Validate RSR is callable from Questionable");
return true;
}
catch (IpcError)
{
return false;
}
}
}
public bool Start(CombatController.CombatData combatData)
public bool Start()
{
try
{

View File

@ -7,9 +7,7 @@ using Dalamud.Game.Addon.Lifecycle;
using Dalamud.Game.Addon.Lifecycle.AddonArgTypes;
using Dalamud.Game.ClientState.Objects;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game;
using FFXIVClientStructs.FFXIV.Client.Game.Event;
using FFXIVClientStructs.FFXIV.Client.Game.InstanceContent;
using FFXIVClientStructs.FFXIV.Client.Game.UI;
using FFXIVClientStructs.FFXIV.Client.UI;
using FFXIVClientStructs.FFXIV.Component.GUI;
@ -335,16 +333,7 @@ internal sealed class InteractionUiController : IDisposable
}
else
{
QuestStep? step = null;
if (_territoryData.IsQuestBattleInstance(_clientState.TerritoryType))
{
step = quest.FindSequence(currentQuest.Sequence)?.Steps
.FirstOrDefault(x => x.InteractionType == EInteractionType.SinglePlayerDuty);
}
if (step == null)
step = quest.FindSequence(currentQuest.Sequence)?.FindStep(currentQuest.Step);
var step = quest.FindSequence(currentQuest.Sequence)?.FindStep(currentQuest.Step);
if (step == null)
_logger.LogDebug("Ignoring current quest dialogue choices, no active step");
else
@ -438,27 +427,6 @@ internal sealed class InteractionUiController : IDisposable
if (dialogueChoice.Type != EDialogChoiceType.List)
continue;
if (dialogueChoice.SpecialCondition == "NoDutyActions")
{
try
{
unsafe
{
ContentDirector* contentDirector = EventFramework.Instance()->GetContentDirector();
if (contentDirector != null && contentDirector->DutyActionManager.ActionsPresent)
{
_logger.LogInformation("NoDutyActions: actions present, skipping dialogue choice");
continue;
}
}
}
catch (Exception ex)
{
_logger.LogError(ex, "Failed to check for duty actions");
continue;
}
}
if (dialogueChoice.Answer == null)
{
_logger.LogDebug("Ignoring entry in DialogueChoices, no answer");

View File

@ -169,7 +169,7 @@ internal abstract class MiniTaskController<T>
if (_condition[ConditionFlag.Mounted])
tasks.Add(new Mount.UnmountTask());
tasks.Add(Combat.Factory.CreateTask(null, false, EEnemySpawnType.QuestInterruption, [], [], [], null));
tasks.Add(Combat.Factory.CreateTask(null, false, EEnemySpawnType.QuestInterruption, [], [], []));
tasks.Add(new WaitAtEnd.WaitDelay());
_taskQueue.InterruptWith(tasks);
}

View File

@ -144,7 +144,7 @@ internal sealed class QuestRegistry
private void ValidateQuests()
{
_questValidator.Validate(_quests.Values.Where(x => x.Source != Quest.ESource.Assembly).ToList());
_questValidator.Validate(_quests.Values.Where(x => x.Source != Quest.ESource.Assembly));
}
private void LoadQuestFromStream(string fileName, Stream stream, Quest.ESource source)

View File

@ -97,12 +97,12 @@ internal static class Combat
bool isLastStep = sequence.Steps.Last() == step;
return CreateTask(quest.Id, isLastStep, step.EnemySpawnType.Value, step.KillEnemyDataIds,
step.CompletionQuestVariablesFlags, step.ComplexCombatData, step.CombatItemUse);
step.CompletionQuestVariablesFlags, step.ComplexCombatData);
}
internal static Task CreateTask(ElementId? elementId, bool isLastStep, EEnemySpawnType enemySpawnType,
IList<uint> killEnemyDataIds, IList<QuestWorkValue?> completionQuestVariablesFlags,
IList<ComplexCombatData> complexCombatData, CombatItemUse? combatItemUse)
IList<ComplexCombatData> complexCombatData)
{
return new Task(new CombatController.CombatData
{
@ -110,7 +110,6 @@ internal static class Combat
SpawnType = enemySpawnType,
KillEnemyDataIds = killEnemyDataIds.ToList(),
ComplexCombatDatas = complexCombatData.ToList(),
CombatItemUse = combatItemUse,
}, completionQuestVariablesFlags, isLastStep);
}
}

View File

@ -25,14 +25,5 @@ internal interface IQuestInfo
public string SimplifiedName => Name
.Replace(".", "", StringComparison.Ordinal)
.Replace("*", "", StringComparison.Ordinal)
.Replace("\"", "", StringComparison.Ordinal)
.Replace("/", "", StringComparison.Ordinal)
.Replace("\\", "", StringComparison.Ordinal)
.Replace("<", "", StringComparison.Ordinal)
.Replace(">", "", StringComparison.Ordinal)
.Replace("|", "", StringComparison.Ordinal)
.Replace(":", "", StringComparison.Ordinal)
.Replace("?", "", StringComparison.Ordinal)
.TrimStart(SeIconChar.QuestSync.ToIconChar(), SeIconChar.QuestRepeatable.ToIconChar(), ' ');
}

View File

@ -13,7 +13,7 @@
<PackageReference Include="JetBrains.Annotations" Version="2024.2.0" ExcludeAssets="runtime" />
<PackageReference Include="JsonSchema.Net" Version="7.1.2" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0"/>
<PackageReference Include="System.Text.Json" Version="8.0.5" />
<PackageReference Include="System.Text.Json" Version="8.0.4" />
</ItemGroup>
<ItemGroup>

View File

@ -234,7 +234,6 @@ public sealed class QuestionablePlugin : IDalamudPlugin
serviceCollection.AddSingleton<LeveUiController>();
serviceCollection.AddSingleton<ICombatModule, Mount128Module>();
serviceCollection.AddSingleton<ICombatModule, ItemUseModule>();
serviceCollection.AddSingleton<ICombatModule, RotationSolverRebornModule>();
}

View File

@ -157,17 +157,14 @@ internal sealed class CreationUtilsComponent
}
#endif
#if false
if (_configuration.Advanced.AdditionalStatusInformation)
#if true
unsafe
{
unsafe
{
var actionManager = ActionManager.Instance();
ImGui.Text(
$"A1: {actionManager->CastActionId} ({actionManager->LastUsedActionSequence} → {actionManager->LastHandledActionSequence})");
ImGui.Text($"A2: {actionManager->CastTimeElapsed} / {actionManager->CastTimeTotal}");
ImGui.Text($"{_questController.TaskQueue.CurrentTaskExecutor?.ProgressContext}");
}
var actionManager = ActionManager.Instance();
ImGui.Text(
$"A1: {actionManager->CastActionId} ({actionManager->LastUsedActionSequence} → {actionManager->LastHandledActionSequence})");
ImGui.Text($"A2: {actionManager->CastTimeElapsed} / {actionManager->CastTimeTotal}");
ImGui.Text($"{_questController.TaskQueue.CurrentTaskExecutor?.ProgressContext}");
}
#endif

View File

@ -65,9 +65,12 @@
},
"System.Text.Json": {
"type": "Direct",
"requested": "[8.0.5, )",
"resolved": "8.0.5",
"contentHash": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg=="
"requested": "[8.0.4, )",
"resolved": "8.0.4",
"contentHash": "bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==",
"dependencies": {
"System.Text.Encodings.Web": "8.0.0"
}
},
"Humanizer.Core": {
"type": "Transitive",
@ -171,10 +174,15 @@
"Microsoft.SourceLink.Common": "1.1.1"
}
},
"System.Text.Encodings.Web": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ=="
},
"gatheringpaths": {
"type": "Project",
"dependencies": {
"Questionable.Model": "[3.10.0, )"
"Questionable.Model": "[1.0.0, )"
}
},
"llib": {
@ -186,13 +194,13 @@
"questionable.model": {
"type": "Project",
"dependencies": {
"System.Text.Json": "[8.0.5, )"
"System.Text.Json": "[8.0.4, )"
}
},
"questpaths": {
"type": "Project",
"dependencies": {
"Questionable.Model": "[3.10.0, )"
"Questionable.Model": "[1.0.0, )"
}
}
}