Mini-YA
This commit is contained in:
parent
a45cfda2e6
commit
9bbfbc54d3
@ -29,7 +29,14 @@
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Elpis - Anagnorisis"
|
||||
"AetheryteShortcut": "Elpis - Anagnorisis",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKZH018_04313_Q1_000_100",
|
||||
"Answer": "TEXT_AKTKZH018_04313_A2_000_100"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -90,7 +90,14 @@
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKZD008_04232_Q1_000_000",
|
||||
"Answer": "TEXT_AKTKZD008_04232_A1_000_002"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -75,6 +75,21 @@
|
||||
},
|
||||
"TerritoryId": 962,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
],
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMA103_04359_Q5_000_071",
|
||||
"Yes": true
|
||||
}
|
||||
],
|
||||
"$.0": "[1]",
|
||||
"$.2": "QuestVariables if done after [3]: 2 0 0 0 0 96"
|
||||
},
|
||||
@ -87,6 +102,21 @@
|
||||
},
|
||||
"TerritoryId": 962,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
],
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMA103_04359_Q2_000_049",
|
||||
"Yes": true
|
||||
}
|
||||
],
|
||||
"$.0": "[2]"
|
||||
},
|
||||
{
|
||||
@ -98,6 +128,21 @@
|
||||
},
|
||||
"TerritoryId": 962,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
],
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMA103_04359_Q3_000_055",
|
||||
"Yes": true
|
||||
}
|
||||
],
|
||||
"$.0": "[3]",
|
||||
"$.2": "QuestVariables if used first: 1 0 0 0 0 64"
|
||||
}
|
||||
|
@ -88,7 +88,14 @@
|
||||
"Z": 130.47986
|
||||
},
|
||||
"TerritoryId": 962,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKMA104_04360_Q3_000_130",
|
||||
"Answer": "TEXT_AKTKMA104_04360_A3_000_131"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -103,7 +110,14 @@
|
||||
"Z": 141.1001
|
||||
},
|
||||
"TerritoryId": 962,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKMA104_04360_Q5_000_150",
|
||||
"Answer": "TEXT_AKTKMA104_04360_A5_000_151"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -118,7 +132,14 @@
|
||||
"Z": 148.11926
|
||||
},
|
||||
"TerritoryId": 962,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKMA104_04360_Q6_000_170",
|
||||
"Answer": "TEXT_AKTKMA104_04360_A6_000_171"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -101,9 +101,9 @@
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": -425.43683,
|
||||
"Y": 38.413155,
|
||||
"Z": 160.11292
|
||||
"X": -436.3368,
|
||||
"Y": 38.647118,
|
||||
"Z": 166.13683
|
||||
},
|
||||
"TerritoryId": 957,
|
||||
"InteractionType": "WalkTo"
|
||||
|
@ -43,7 +43,14 @@
|
||||
"Z": 28.244385
|
||||
},
|
||||
"TerritoryId": 957,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMA118_04374_Q1_000_041",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -108,7 +115,14 @@
|
||||
"Z": -555.04694
|
||||
},
|
||||
"TerritoryId": 957,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMA118_04374_Q2_000_141",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -105,7 +105,14 @@
|
||||
"Z": -565.0569
|
||||
},
|
||||
"TerritoryId": 957,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMA119_04375_Q1_000_056",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -1,6 +1,9 @@
|
||||
{
|
||||
"$schema": "https://carvel.li/questionable/quest-1.0",
|
||||
"Author": "liza",
|
||||
"TerritoryBlacklist": [
|
||||
952
|
||||
],
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
|
@ -119,7 +119,14 @@
|
||||
},
|
||||
"StopDistance": 6,
|
||||
"TerritoryId": 962,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMA123_04379_Q1_000_163",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -59,7 +59,14 @@
|
||||
},
|
||||
"TerritoryId": 129,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Limsa Lominsa"
|
||||
"AetheryteShortcut": "Limsa Lominsa",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMB102_04381_Q1_000_067",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -30,7 +30,14 @@
|
||||
},
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 621,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMB103_04382_Q1_000_052",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -62,7 +69,15 @@
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 737,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "A-Ruhn-Senna"
|
||||
"Comment": "A-Ruhn-Senna",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1038812,
|
||||
@ -74,7 +89,15 @@
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 737,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Sicard"
|
||||
"Comment": "Sicard",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1038813,
|
||||
@ -86,7 +109,15 @@
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 737,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Lyse"
|
||||
"Comment": "Lyse",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1038814,
|
||||
@ -98,7 +129,15 @@
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 737,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Lucia"
|
||||
"Comment": "Lucia",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
16
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1038815,
|
||||
@ -110,7 +149,15 @@
|
||||
"StopDistance": 7,
|
||||
"TerritoryId": 737,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Cirina"
|
||||
"Comment": "Cirina",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
8
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -32,7 +32,19 @@
|
||||
},
|
||||
"TerritoryId": 621,
|
||||
"InteractionType": "SinglePlayerDuty",
|
||||
"Comment": "A Frosty Reception"
|
||||
"Comment": "A Frosty Reception",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "ContentTalkList",
|
||||
"Prompt": "264",
|
||||
"Answer": "267"
|
||||
},
|
||||
{
|
||||
"Type": "ContentTalkYesNo",
|
||||
"Prompt": "268",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -45,10 +45,11 @@
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": -188.58397,
|
||||
"Y": 20.625948,
|
||||
"Z": 408.3002
|
||||
"X": -188.84349,
|
||||
"Y": 20.31553,
|
||||
"Z": 406.13293
|
||||
},
|
||||
"StopDistance": 1,
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "WalkTo",
|
||||
"DisableNavmesh": true,
|
||||
@ -75,6 +76,7 @@
|
||||
"Y": 3.426586,
|
||||
"Z": 360.1115
|
||||
},
|
||||
"StopDistance": 1,
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "WalkTo",
|
||||
"DisableNavmesh": true,
|
||||
@ -158,7 +160,7 @@
|
||||
"Z": 159.10571
|
||||
},
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "WalkTo"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -110,14 +110,123 @@
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 393.71204,
|
||||
"Y": 4.142438,
|
||||
"Z": 251.71986
|
||||
"X": 394.97046,
|
||||
"Y": 3.652959,
|
||||
"Z": 254.77034
|
||||
},
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "ShouldBeAJump",
|
||||
"InteractionType": "Jump",
|
||||
"DisableNavmesh": true,
|
||||
"Comment": "Jump on Pipeline and move near the Aether Current"
|
||||
"JumpDestination": {
|
||||
"Position": {
|
||||
"X": 405.0264,
|
||||
"Y": -2.2185562,
|
||||
"Z": 267.40506
|
||||
},
|
||||
"StopDistance": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 405.01987,
|
||||
"Y": -2.2185562,
|
||||
"Z": 298.9302
|
||||
},
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Jump",
|
||||
"JumpDestination": {
|
||||
"Position": {
|
||||
"X": 405.01382,
|
||||
"Y": -2.2185562,
|
||||
"Z": 308.17484
|
||||
},
|
||||
"StopDistance": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 404.9343,
|
||||
"Y": -2.2185562,
|
||||
"Z": 338.46368
|
||||
},
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Jump",
|
||||
"JumpDestination": {
|
||||
"Position": {
|
||||
"X": 404.9452,
|
||||
"Y": -2.2185562,
|
||||
"Z": 347.15533
|
||||
},
|
||||
"StopDistance": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 405.0104,
|
||||
"Y": -2.2185562,
|
||||
"Z": 379.0302
|
||||
},
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Jump",
|
||||
"JumpDestination": {
|
||||
"Position": {
|
||||
"X": 404.98633,
|
||||
"Y": -2.2185562,
|
||||
"Z": 388.4368
|
||||
},
|
||||
"StopDistance": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 405.02594,
|
||||
"Y": -2.2185562,
|
||||
"Z": 419.30426
|
||||
},
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Jump",
|
||||
"JumpDestination": {
|
||||
"Position": {
|
||||
"X": 405.00076,
|
||||
"Y": -2.2185562,
|
||||
"Z": 427.6698
|
||||
},
|
||||
"StopDistance": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 405.03207,
|
||||
"Y": -2.2185562,
|
||||
"Z": 457.66095
|
||||
},
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Jump",
|
||||
"JumpDestination": {
|
||||
"Position": {
|
||||
"X": 404.94934,
|
||||
"Y": -2.2185562,
|
||||
"Z": 467.3867
|
||||
},
|
||||
"StopDistance": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": 405.04044,
|
||||
"Y": -2.2185562,
|
||||
"Z": 498.37363
|
||||
},
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Jump",
|
||||
"JumpDestination": {
|
||||
"Position": {
|
||||
"X": 405.158,
|
||||
"Y": -2.2185564,
|
||||
"Z": 508.9487
|
||||
},
|
||||
"StopDistance": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 2012003,
|
||||
|
@ -78,7 +78,14 @@
|
||||
},
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "WaitForManualProgress",
|
||||
"Comment": "Follow Alphinaud and Alisaie"
|
||||
"Comment": "Follow Alphinaud and Alisaie",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMB108_04387_Q1_000_161",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -30,6 +30,14 @@
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Caeso",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
],
|
||||
"$.0": "[1]",
|
||||
"$.1": "QuestVariables if done first: 17 0 0 0 0 64"
|
||||
},
|
||||
@ -43,6 +51,14 @@
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Octavia",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
16
|
||||
],
|
||||
"$.0": "[2]",
|
||||
"$.2": "QuestVariables if done after [1]: 33 1 0 0 0 80"
|
||||
},
|
||||
@ -53,7 +69,15 @@
|
||||
"Z": -178.38684
|
||||
},
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "WalkTo"
|
||||
"InteractionType": "WalkTo",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1037715,
|
||||
@ -65,6 +89,14 @@
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Sabinianus",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
],
|
||||
"$.0": "[3]",
|
||||
"$.2": "QuestVariables if done after [1, 2]: 49 1 16 0 0 206"
|
||||
},
|
||||
@ -78,6 +110,14 @@
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Marcellinus",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
],
|
||||
"$.0": "[4]",
|
||||
"$.2": "QuestVariables if done after [1, 2, 3]: 65 17 16 0 0 240"
|
||||
},
|
||||
@ -91,6 +131,14 @@
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Magitek Radio",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
8
|
||||
],
|
||||
"$.0": "[5]"
|
||||
}
|
||||
]
|
||||
|
@ -31,6 +31,14 @@
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Marcellinus",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
],
|
||||
"$.1": "QuestVariables if done first: 16 16 0 0 0 128"
|
||||
},
|
||||
{
|
||||
@ -42,7 +50,15 @@
|
||||
},
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Octavia"
|
||||
"Comment": "Octavia",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -57,7 +73,14 @@
|
||||
"Z": -422.62915
|
||||
},
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKMB113_04392_Q1_000_031",
|
||||
"Answer": "TEXT_AKTKMB113_04392_A1_000_032"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -72,7 +95,14 @@
|
||||
"Z": -232.98999
|
||||
},
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMB113_04392_Q2_000_051",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -215,6 +215,14 @@
|
||||
"KillEnemyDataIds": [
|
||||
14078
|
||||
],
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
],
|
||||
"$.0": "[1]",
|
||||
"$.1": "QuestVariables if done first: (before) 0 0 2 0 0 0 (after) 16 16 2 0 0 64"
|
||||
},
|
||||
@ -234,6 +242,14 @@
|
||||
"Comment": "TODO Needs item use?",
|
||||
"ItemId": 2003231,
|
||||
"ItemUseHealthMaxPercent": 10,
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
],
|
||||
"$.0": "[2]",
|
||||
"$.1": "QuestVariables if done after [1]: 32 17 1 0 0 96"
|
||||
},
|
||||
@ -246,7 +262,14 @@
|
||||
},
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "TODO Maybe move the train station aether current interaction before this",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
],
|
||||
"$.0": "[3]",
|
||||
"$.1": "QuestVariables if done after [1, 2]: 49 17 1 0 0 224"
|
||||
},
|
||||
@ -266,6 +289,14 @@
|
||||
"Comment": "TODO Needs item use?",
|
||||
"ItemId": 2003231,
|
||||
"ItemUseHealthMaxPercent": 10,
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
16
|
||||
],
|
||||
"$.0": "[4]"
|
||||
}
|
||||
]
|
||||
|
@ -1,6 +1,9 @@
|
||||
{
|
||||
"$schema": "https://carvel.li/questionable/quest-1.0",
|
||||
"Author": "liza",
|
||||
"TerritoryBlacklist": [
|
||||
1011
|
||||
],
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
@ -29,7 +32,14 @@
|
||||
},
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "SinglePlayerDuty",
|
||||
"Comment": "In from the Cold"
|
||||
"Comment": "In from the Cold",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMB115_04394_Q1_000_042",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -43,6 +53,7 @@
|
||||
"Y": 22.20836,
|
||||
"Z": 403.76892
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
|
@ -1,6 +1,9 @@
|
||||
{
|
||||
"$schema": "https://carvel.li/questionable/quest-1.0",
|
||||
"Author": "liza",
|
||||
"TerritoryBlacklist": [
|
||||
969
|
||||
],
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
@ -80,7 +83,14 @@
|
||||
"Z": -677.4243
|
||||
},
|
||||
"TerritoryId": 958,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMB116_04395_Q3_000_206",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2012112,
|
||||
@ -114,6 +124,7 @@
|
||||
"Y": 0,
|
||||
"Z": 33.585083
|
||||
},
|
||||
"StopDistance": 4,
|
||||
"TerritoryId": 1024,
|
||||
"InteractionType": "Interact"
|
||||
}
|
||||
|
@ -28,7 +28,14 @@
|
||||
"Z": -0.00103838
|
||||
},
|
||||
"TerritoryId": 1024,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMB117_04396_Q1_000_060",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -16,7 +16,14 @@
|
||||
"Z": 467.46008
|
||||
},
|
||||
"TerritoryId": 959,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKMB119_04398_Q1_000_001",
|
||||
"Answer": "TEXT_AKTKMB119_04398_A1_000_002"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -31,7 +38,14 @@
|
||||
"Z": 467.46008
|
||||
},
|
||||
"TerritoryId": 959,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMB119_04398_Q2_000_010",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -137,7 +137,14 @@
|
||||
},
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 959,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMC102_04400_Q1_000_151",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -1,6 +1,7 @@
|
||||
{
|
||||
"$schema": "https://carvel.li/questionable/quest-1.0",
|
||||
"Author": "liza",
|
||||
"Comment": "TODO add aether current (2818368) here since it can't be reached later with mount speed 0",
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
@ -97,6 +98,15 @@
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -9.783533,
|
||||
"Y": -49.589592,
|
||||
"Z": -339.60205
|
||||
},
|
||||
"TerritoryId": 959,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": -72.39724,
|
||||
|
@ -81,7 +81,20 @@
|
||||
{
|
||||
"DataId": 2012178,
|
||||
"TerritoryId": 959,
|
||||
"StopDistance": 3,
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKMC104_04402_Q1_000_071",
|
||||
"Answer": "TEXT_AKTKMC104_04402_A1_000_074"
|
||||
},
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMC104_04402_Q2_000_081",
|
||||
"Yes": true
|
||||
}
|
||||
],
|
||||
"Comment": "Navmesh can't jump"
|
||||
}
|
||||
]
|
||||
@ -102,10 +115,33 @@
|
||||
},
|
||||
{
|
||||
"DataId": 1038912,
|
||||
"StopDistance": 5,
|
||||
"Position": {
|
||||
"X": -462.06528,
|
||||
"Y": -155.5629,
|
||||
"Z": -625.5277
|
||||
},
|
||||
"TerritoryId": 959,
|
||||
"InteractionType": "Jump",
|
||||
"JumpDestination": {
|
||||
"Position": {
|
||||
"X": -453.99258,
|
||||
"Y": -168,
|
||||
"Z": -618.5703
|
||||
},
|
||||
"StopDistance": 8
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 1038912,
|
||||
"Position": {
|
||||
"X": -455.40552,
|
||||
"Y": -168,
|
||||
"Z": -620.05035
|
||||
},
|
||||
"TerritoryId": 959,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Navmesh can't jump"
|
||||
"DialogueChoices": [
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -49,6 +49,13 @@
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 959,
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKMC105_04403_Q1_000_073",
|
||||
"Answer": "TEXT_AKTKMC105_04403_A1_000_075"
|
||||
}
|
||||
],
|
||||
"Comment": "Navmesh can't jump"
|
||||
}
|
||||
]
|
||||
@ -70,6 +77,13 @@
|
||||
"StopDistance": 5,
|
||||
"TerritoryId": 959,
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKMC105_04403_Q1_000_118",
|
||||
"Answer": "TEXT_AKTKMC105_04403_A1_000_120"
|
||||
}
|
||||
],
|
||||
"Comment": "Navmesh can't jump"
|
||||
}
|
||||
]
|
||||
@ -116,7 +130,14 @@
|
||||
},
|
||||
"TerritoryId": 959,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Mare Lamentorum - Bestways Burrow"
|
||||
"AetheryteShortcut": "Mare Lamentorum - Bestways Burrow",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMC105_04403_SYSTEM_000_215",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -64,7 +64,14 @@
|
||||
"Z": -494.13293
|
||||
},
|
||||
"TerritoryId": 959,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKMC106_04404_Q1_000_021",
|
||||
"Answer": "TEXT_AKTKMC106_04404_A1_000_022"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -46,7 +46,7 @@
|
||||
},
|
||||
"TerritoryId": 959,
|
||||
"InteractionType": "SinglePlayerDuty",
|
||||
"Comment": "Follow Urianger"
|
||||
"Comment": "Follow Urianger (TODO is this sequence used?)"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -62,7 +62,7 @@
|
||||
},
|
||||
"TerritoryId": 959,
|
||||
"InteractionType": "SinglePlayerDuty",
|
||||
"Comment": "Follow Urianger (but you failed the first time)"
|
||||
"Comment": "Follow Urianger"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -136,9 +136,16 @@
|
||||
"Z": -558.8681
|
||||
},
|
||||
"TerritoryId": 959,
|
||||
"InteractionType": "ShouldBeAJump",
|
||||
"InteractionType": "Jump",
|
||||
"AetheryteShortcut": "Mare Lamentorum - Bestways Burrow",
|
||||
"Comment": "Navmesh can't jump"
|
||||
"JumpDestination": {
|
||||
"Position": {
|
||||
"X": 307.72073,
|
||||
"Y": -143.15913,
|
||||
"Z": -563.4788
|
||||
},
|
||||
"StopDistance": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 2012012,
|
||||
|
@ -31,7 +31,10 @@
|
||||
"TerritoryId": 959,
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Mare Lamentorum - Bestways Burrow",
|
||||
"Comment": "Teleporter"
|
||||
"TargetTerritoryId": 959,
|
||||
"SkipIf": [
|
||||
"Never"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
|
@ -39,7 +39,8 @@
|
||||
"Z": 728.96924
|
||||
},
|
||||
"TerritoryId": 959,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"TargetTerritoryId": 1024
|
||||
},
|
||||
{
|
||||
"DataId": 1038960,
|
||||
@ -111,7 +112,14 @@
|
||||
"Z": -5.081299
|
||||
},
|
||||
"TerritoryId": 987,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMC110_04408_Q3_000_170",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -130,6 +138,13 @@
|
||||
"AethernetShortcut": [
|
||||
"[Old Sharlayan] Aetheryte Plaza",
|
||||
"[Old Sharlayan] The Baldesion Annex"
|
||||
],
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMC110_04408_Q4_000_204",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
@ -1,6 +1,9 @@
|
||||
{
|
||||
"$schema": "https://carvel.li/questionable/quest-1.0",
|
||||
"Author": "liza",
|
||||
"TerritoryBlacklist": [
|
||||
970
|
||||
],
|
||||
"QuestSequence": [
|
||||
{
|
||||
"Sequence": 0,
|
||||
|
@ -60,6 +60,14 @@
|
||||
},
|
||||
"TerritoryId": 963,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
],
|
||||
"Comment": "Varsra"
|
||||
},
|
||||
{
|
||||
@ -71,6 +79,14 @@
|
||||
},
|
||||
"TerritoryId": 963,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
],
|
||||
"Comment": "Zeytahnur"
|
||||
},
|
||||
{
|
||||
@ -82,6 +98,14 @@
|
||||
},
|
||||
"TerritoryId": 963,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
],
|
||||
"Comment": "Rahdvira"
|
||||
}
|
||||
]
|
||||
|
@ -66,7 +66,14 @@
|
||||
"Z": -330.46472
|
||||
},
|
||||
"TerritoryId": 957,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKMD105_04413_Q1_000_095",
|
||||
"Answer": "TEXT_AKTKMD105_04413_A1_000_096"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -140,6 +140,14 @@
|
||||
"KillEnemyDataIds": [
|
||||
13987
|
||||
],
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
],
|
||||
"$.0": "[1]",
|
||||
"$.1": "QuestVariables if done first: 16 1 0 0 0 128"
|
||||
},
|
||||
@ -155,6 +163,14 @@
|
||||
"KillEnemyDataIds": [
|
||||
13986
|
||||
],
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
],
|
||||
"$.0": "[2]",
|
||||
"$.1": "QuestVariables if done after [1]: 33 1 0 0 0 192",
|
||||
"$.2": "QuestVariables if done after [3]: 33 32 0 0 0 96"
|
||||
@ -172,6 +188,14 @@
|
||||
13985,
|
||||
13984
|
||||
],
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
],
|
||||
"$.0": "[3]",
|
||||
"$.2": "QuestVariables if done first: 16 32 0 0 0 32"
|
||||
}
|
||||
|
@ -52,6 +52,7 @@
|
||||
},
|
||||
{
|
||||
"Sequence": 3,
|
||||
"Comment": "TODO Check flags",
|
||||
"Steps": [
|
||||
{
|
||||
"DataId": 1037628,
|
||||
@ -61,7 +62,15 @@
|
||||
"Z": -243.76288
|
||||
},
|
||||
"TerritoryId": 957,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1040449,
|
||||
@ -71,7 +80,15 @@
|
||||
"Z": -238.3612
|
||||
},
|
||||
"TerritoryId": 957,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1037629,
|
||||
@ -81,7 +98,15 @@
|
||||
"Z": -200.85455
|
||||
},
|
||||
"TerritoryId": 957,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -95,7 +95,14 @@
|
||||
"Z": -87.90729
|
||||
},
|
||||
"TerritoryId": 963,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKMD110_04418_Q2_000_172",
|
||||
"Answer": "TEXT_AKTKMD110_04418_A2_000_173"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -114,6 +121,13 @@
|
||||
"AethernetShortcut": [
|
||||
"[Radz-at-Han] Hall of the Radiant Host",
|
||||
"[Radz-at-Han] Mehryde's Meyhane"
|
||||
],
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKMD110_04418_Q3_000_223",
|
||||
"Answer": "TEXT_AKTKMD110_04418_A3_000_225"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
@ -50,12 +50,33 @@
|
||||
"Z": -210.52875
|
||||
},
|
||||
"TerritoryId": 819,
|
||||
"InteractionType": "WaitForManualProgress",
|
||||
"Comment": "Cutscene Interaction needed",
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Crystarium",
|
||||
"AethernetShortcut": [
|
||||
"[Crystarium] Aetheryte Plaza",
|
||||
"[Crystarium] The Cabinet of Curiosity"
|
||||
],
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKME101_04419_Q2_000_071",
|
||||
"Yes": true
|
||||
},
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKME101_04419_Q3_000_083",
|
||||
"Answer": "TEXT_AKTKME101_04419_A3_000_087"
|
||||
},
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKME101_04419_Q4_000_113",
|
||||
"Answer": "TEXT_AKTKME101_04419_A4_000_114"
|
||||
},
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKME101_04419_Q5_000_129",
|
||||
"Answer": "TEXT_AKTKME101_04419_A5_000_131"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
@ -33,7 +33,9 @@
|
||||
"AethernetShortcut": [
|
||||
"[Crystarium] The Cabinet of Curiosity",
|
||||
"[Crystarium] The Dossal Gate"
|
||||
]
|
||||
],
|
||||
"Comment": "TODO Check target territory id",
|
||||
"TargetTerritoryId": 844
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -47,13 +49,40 @@
|
||||
"Z": -4.654831
|
||||
},
|
||||
"TerritoryId": 1031,
|
||||
"InteractionType": "WalkTo"
|
||||
"InteractionType": "Jump",
|
||||
"JumpDestination": {
|
||||
"Position": {
|
||||
"X": -1.5539734,
|
||||
"Y": 3.6164591,
|
||||
"Z": -1.1141448
|
||||
}
|
||||
},
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
16
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2012128,
|
||||
"Position": {
|
||||
"X": -0.001528129,
|
||||
"Y": 4.931927,
|
||||
"Z": 0.01416349
|
||||
},
|
||||
"TerritoryId": 1031,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Interact with Aetheryte (Navmesh can't jump)",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
16
|
||||
],
|
||||
"$.0": "[1]",
|
||||
"$.1": "QuestVariables if done first: 16 0 16 0 0 16"
|
||||
},
|
||||
@ -66,6 +95,14 @@
|
||||
},
|
||||
"TerritoryId": 1031,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
],
|
||||
"$.0": "[2]",
|
||||
"$": "QuestVariables after: 32 1 16 0 0 144"
|
||||
},
|
||||
@ -78,6 +115,14 @@
|
||||
},
|
||||
"TerritoryId": 1031,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
],
|
||||
"$.0": "[3]",
|
||||
"$.1": "QuestVariables after: 49 1 16 0 0 208"
|
||||
},
|
||||
@ -90,6 +135,14 @@
|
||||
},
|
||||
"TerritoryId": 1031,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
],
|
||||
"$.0": "[4]",
|
||||
"$.2": "QuestVariables if done first: 16 16 0 0 0 32"
|
||||
}
|
||||
|
@ -58,7 +58,14 @@
|
||||
"Z": 157.61035
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKME104_04422_Q1_000_094",
|
||||
"Answer": "TEXT_AKTKME104_04422_A1_000_095"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -85,7 +85,14 @@
|
||||
"Z": 73.258545
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKME105_04423_Q1_000_106",
|
||||
"Answer": "TEXT_AKTKME105_04423_A1_000_107"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -100,7 +107,14 @@
|
||||
"Z": 121.47705
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKME105_04423_Q4_000_178",
|
||||
"Answer": "TEXT_AKTKME105_04423_A4_000_180"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -130,7 +144,14 @@
|
||||
"Z": 107.133545
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKME105_04423_Q7_000_313",
|
||||
"Answer": "TEXT_AKTKME105_04423_A7_000_314"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -13,7 +13,14 @@
|
||||
"Z": 63.70642
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKME107_04425_Q1_000_024",
|
||||
"Answer": "TEXT_AKTKME107_04425_A1_000_025"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -46,6 +46,14 @@
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
],
|
||||
"$.1": "QuestVariables if done first: 1 0 0 0 0 128"
|
||||
},
|
||||
{
|
||||
@ -56,7 +64,15 @@
|
||||
"Z": 543.572
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -116,7 +132,14 @@
|
||||
"Z": 460.77673
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKME109_04427_Q3_000_163",
|
||||
"Answer": "TEXT_AKTKME109_04427_A3_000_164"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -102,7 +102,14 @@
|
||||
"Z": -113.81708
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKME111_04429_Q2_000_094",
|
||||
"Answer": "TEXT_AKTKME111_04429_A2_000_096"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -84,8 +84,29 @@
|
||||
"Z": -173.75458
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "WaitForManualProgress",
|
||||
"Comment": "Talk (1, 2, 1)"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKME112_04430_Q1_000_072",
|
||||
"Yes": true
|
||||
},
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKME112_04430_Q2_000_076",
|
||||
"Answer": "TEXT_AKTKME112_04430_A2_000_077"
|
||||
},
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKME112_04430_Q3_000_089",
|
||||
"Answer": "TEXT_AKTKME112_04430_A3_000_091"
|
||||
},
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKME112_04430_Q4_000_098",
|
||||
"Answer": "TEXT_AKTKME112_04430_A4_000_099"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -125,7 +146,29 @@
|
||||
"Z": -155.5047
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "WaitForManualProgress",
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKME112_04430_Q5_000_152",
|
||||
"Yes": true
|
||||
},
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKME112_04430_Q6_000_154",
|
||||
"Answer": "TEXT_AKTKME112_04430_A6_000_156"
|
||||
},
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKME112_04430_Q7_000_168",
|
||||
"Answer": "TEXT_AKTKME112_04430_A7_000_170"
|
||||
},
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKME112_04430_Q8_000_181",
|
||||
"Answer": "TEXT_AKTKME112_04430_A8_000_182"
|
||||
}
|
||||
],
|
||||
"Comment": "Talk (2, 2, 1)"
|
||||
}
|
||||
]
|
||||
|
@ -13,7 +13,14 @@
|
||||
"Z": -175.24994
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKME113_04431_Q1_000_014",
|
||||
"Answer": "TEXT_AKTKME113_04431_A1_000_016"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -40,7 +40,14 @@
|
||||
"Z": 198.68762
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKME115_04433_Q1_000_021",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -82,7 +89,14 @@
|
||||
"Z": -367.48303
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKME115_04433_Q2_000_062",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -29,7 +29,14 @@
|
||||
"Z": -653.13196
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKME116_04434_Q1_000_021",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -30,7 +30,14 @@
|
||||
},
|
||||
"TerritoryId": 961,
|
||||
"InteractionType": "Interact",
|
||||
"Fly": true
|
||||
"Fly": true,
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKME120_04438_Q1_000_008",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -45,7 +45,14 @@
|
||||
"Z": -393.36237
|
||||
},
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMF103_04441_Q1_000_096",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1039711,
|
||||
@ -85,7 +92,14 @@
|
||||
"Z": 302.11328
|
||||
},
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMF103_04441_Q1_000_181",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -65,6 +65,14 @@
|
||||
},
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
],
|
||||
"$.0": "[1] Navmesh navigates here first, even if you feed it [2]",
|
||||
"$.1": "QuestVariables if done first: 1 0 0 0 0 64"
|
||||
},
|
||||
@ -77,6 +85,14 @@
|
||||
},
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
],
|
||||
"$.0": "[2]",
|
||||
"$.1": "QuestVariables after: 2 0 0 0 0 192"
|
||||
},
|
||||
@ -88,7 +104,15 @@
|
||||
"Z": -14.450317
|
||||
},
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -110,7 +110,11 @@
|
||||
"Z": 298.72583
|
||||
},
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"TargetTerritoryId": 956,
|
||||
"SkipIf": [
|
||||
"Never"
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1040397,
|
||||
|
@ -60,7 +60,14 @@
|
||||
},
|
||||
"StopDistance": 0.25,
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKMF106_04444_Q3_000_125",
|
||||
"Answer": "TEXT_AKTKMF106_04444_A3_000_126"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -138,7 +145,14 @@
|
||||
"Z": 299.8855
|
||||
},
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "List",
|
||||
"Prompt": "TEXT_AKTKMF106_04444_Q4_000_272",
|
||||
"Answer": "TEXT_AKTKMF106_04444_A4_000_273"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -72,6 +72,14 @@
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Distracted Researcher",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
2,
|
||||
null
|
||||
],
|
||||
"$.0": "[1]",
|
||||
"$.1": "QuestVariables if done first: 1 0 0 0 2 0"
|
||||
},
|
||||
@ -85,6 +93,14 @@
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Hyperventilating Engineer",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128,
|
||||
null
|
||||
],
|
||||
"$.0": "[2]",
|
||||
"$.1": "QuestVariables if done after [1]: 2 0 0 0 130 0"
|
||||
},
|
||||
@ -98,6 +114,14 @@
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Harried Aetherologist",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
8,
|
||||
null
|
||||
],
|
||||
"$.0": "[3]",
|
||||
"$.1": "QuestVariables if done after [2]: 3 0 0 0 138 0"
|
||||
},
|
||||
@ -111,6 +135,15 @@
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Grimacing Naturalist",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
4,
|
||||
null
|
||||
],
|
||||
"Mount": true,
|
||||
"$.0": "[4]",
|
||||
"$.1": "QuestVariables if done after [3]: 4 0 0 0 142 0"
|
||||
},
|
||||
@ -124,6 +157,14 @@
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Ponderous Mathematician",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64,
|
||||
null
|
||||
],
|
||||
"$.0": "[5]",
|
||||
"$.1": "QuestVariables if done after [4]: 5 0 0 0 206 0"
|
||||
},
|
||||
@ -137,6 +178,14 @@
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Despondent Engineer",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32,
|
||||
null
|
||||
],
|
||||
"Mount": true,
|
||||
"$.0": "[6]",
|
||||
"$.1": "QuestVariables if done after [5]: 6 0 0 0 238 0"
|
||||
@ -151,6 +200,14 @@
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Skeptical Researcher",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
1,
|
||||
null
|
||||
],
|
||||
"Mount": true,
|
||||
"$.0": "[7]",
|
||||
"$.1": "QuestVariables if done after [6]: 7 0 0 0 239 0"
|
||||
@ -165,6 +222,14 @@
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact",
|
||||
"Comment": "Anxious Engineer",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
16,
|
||||
null
|
||||
],
|
||||
"$.0": "[8]",
|
||||
"$.2": "QuestVariables if done first: 1 0 0 0 16 0"
|
||||
}
|
||||
|
@ -39,7 +39,14 @@
|
||||
"Z": -81.28485
|
||||
},
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMF110_04448_Q1_000_031",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -85,7 +92,14 @@
|
||||
"Z": 302.17432
|
||||
},
|
||||
"TerritoryId": 956,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"DialogueChoices": [
|
||||
{
|
||||
"Type": "YesNo",
|
||||
"Prompt": "TEXT_AKTKMF110_04448_Q2_000_111",
|
||||
"Yes": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -647,7 +647,17 @@
|
||||
"if": {
|
||||
"properties": {
|
||||
"InteractionType": {
|
||||
"const": "Interact"
|
||||
"anyOf": [
|
||||
{
|
||||
"const": "Interact"
|
||||
},
|
||||
{
|
||||
"const": "SinglePlayerDuty"
|
||||
},
|
||||
{
|
||||
"const": "WaitForManualProgress"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -662,14 +672,19 @@
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"YesNo",
|
||||
"List"
|
||||
"List",
|
||||
"ContentTalkYesNo",
|
||||
"ContentTalkList"
|
||||
]
|
||||
},
|
||||
"ExcelSheet": {
|
||||
"type": "string"
|
||||
},
|
||||
"Prompt": {
|
||||
"type": "string"
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
@ -681,7 +696,14 @@
|
||||
"if": {
|
||||
"properties": {
|
||||
"Type": {
|
||||
"const": "YesNo"
|
||||
"anyOf": [
|
||||
{
|
||||
"const": "YesNo"
|
||||
},
|
||||
{
|
||||
"const": "ContentTalkYesNo"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -701,7 +723,14 @@
|
||||
"if": {
|
||||
"properties": {
|
||||
"Type": {
|
||||
"const": "List"
|
||||
"anyOf": [
|
||||
{
|
||||
"const": "List"
|
||||
},
|
||||
{
|
||||
"const": "ContentTalkList"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -1,4 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using Dalamud.Game.Addon.Lifecycle;
|
||||
using Dalamud.Game.Addon.Lifecycle.AddonArgTypes;
|
||||
@ -19,110 +21,216 @@ internal sealed class GameUiController : IDisposable
|
||||
private readonly IDataManager _dataManager;
|
||||
private readonly GameFunctions _gameFunctions;
|
||||
private readonly QuestController _questController;
|
||||
private readonly IGameGui _gameGui;
|
||||
private readonly IPluginLog _pluginLog;
|
||||
|
||||
public GameUiController(IClientState clientState, IAddonLifecycle addonLifecycle, IDataManager dataManager,
|
||||
GameFunctions gameFunctions, QuestController questController, IPluginLog pluginLog)
|
||||
GameFunctions gameFunctions, QuestController questController, IGameGui gameGui, IPluginLog pluginLog)
|
||||
{
|
||||
_clientState = clientState;
|
||||
_addonLifecycle = addonLifecycle;
|
||||
_dataManager = dataManager;
|
||||
_gameFunctions = gameFunctions;
|
||||
_questController = questController;
|
||||
_gameGui = gameGui;
|
||||
_pluginLog = pluginLog;
|
||||
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "SelectString", SelectStringPostSetup);
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "CutSceneSelectString", CutsceneSelectStringPostSetup);
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "SelectIconString", SelectIconStringPostSetup);
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "SelectYesno", SelectYesnoPostSetup);
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "Credit", CreditPostSetup);
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "AkatsukiNote", UnendingCodexPostSetup);
|
||||
}
|
||||
|
||||
internal unsafe void HandleCurrentDialogueChoices()
|
||||
{
|
||||
if (_gameGui.TryGetAddonByName("SelectString", out AddonSelectString* addonSelectString))
|
||||
{
|
||||
_pluginLog.Information("SelectString window is open");
|
||||
SelectStringPostSetup(addonSelectString);
|
||||
}
|
||||
|
||||
if (_gameGui.TryGetAddonByName("CutSceneSelectString",
|
||||
out AddonCutSceneSelectString* addonCutSceneSelectString))
|
||||
{
|
||||
_pluginLog.Information("CutSceneSelectString window is open");
|
||||
CutsceneSelectStringPostSetup(addonCutSceneSelectString);
|
||||
}
|
||||
|
||||
if (_gameGui.TryGetAddonByName("SelectIconString", out AddonSelectIconString* addonSelectIconString))
|
||||
{
|
||||
_pluginLog.Information("SelectIconString window is open");
|
||||
SelectIconStringPostSetup(addonSelectIconString);
|
||||
}
|
||||
|
||||
if (_gameGui.TryGetAddonByName("SelectYesno", out AddonSelectYesno* addonSelectYesno))
|
||||
{
|
||||
_pluginLog.Information("SelectYesno window is open");
|
||||
SelectYesnoPostSetup(addonSelectYesno);
|
||||
}
|
||||
}
|
||||
|
||||
private unsafe void SelectStringPostSetup(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
AddonSelectString* addonSelectString = (AddonSelectString*)args.Addon;
|
||||
SelectStringPostSetup(addonSelectString);
|
||||
}
|
||||
|
||||
private unsafe void SelectStringPostSetup(AddonSelectString* addonSelectString)
|
||||
{
|
||||
string? actualPrompt = addonSelectString->AtkUnitBase.AtkValues[2].ReadAtkString();
|
||||
if (actualPrompt == null)
|
||||
return;
|
||||
|
||||
var currentQuest = _questController.CurrentQuest;
|
||||
if (currentQuest == null)
|
||||
return;
|
||||
List<string?> answers = new();
|
||||
for (ushort i = 7; i < addonSelectString->AtkUnitBase.AtkValuesCount; ++i)
|
||||
answers.Add(addonSelectString->AtkUnitBase.AtkValues[i].ReadAtkString());
|
||||
|
||||
var quest = currentQuest.Quest;
|
||||
var step = quest.FindSequence(currentQuest.Sequence)?.FindStep(currentQuest.Step);
|
||||
if (step == null)
|
||||
return;
|
||||
|
||||
foreach (var dialogueChoice in step.DialogueChoices)
|
||||
int? answer = HandleListChoice(actualPrompt, answers);
|
||||
if (answer != null)
|
||||
{
|
||||
if (dialogueChoice.Answer == null)
|
||||
continue;
|
||||
|
||||
string? excelPrompt =
|
||||
_gameFunctions.GetExcelString(quest, dialogueChoice.ExcelSheet, dialogueChoice.Prompt);
|
||||
string? excelAnswer =
|
||||
_gameFunctions.GetExcelString(quest, dialogueChoice.ExcelSheet, dialogueChoice.Answer);
|
||||
if (excelPrompt == null || actualPrompt != excelPrompt)
|
||||
continue;
|
||||
|
||||
for (ushort i = 7; i <= addonSelectString->AtkUnitBase.AtkValuesCount; ++i)
|
||||
{
|
||||
string? actualAnswer = addonSelectString->AtkUnitBase.AtkValues[i].ReadAtkString();
|
||||
if (actualAnswer == null || actualAnswer != excelAnswer)
|
||||
continue;
|
||||
|
||||
_questController.IncreaseDialogueChoicesSelected();
|
||||
addonSelectString->AtkUnitBase.FireCallbackInt(i - 7);
|
||||
return;
|
||||
}
|
||||
_questController.IncreaseDialogueChoicesSelected();
|
||||
addonSelectString->AtkUnitBase.FireCallbackInt(answer.Value);
|
||||
}
|
||||
}
|
||||
|
||||
private unsafe void CutsceneSelectStringPostSetup(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
AddonCutSceneSelectString* addonCutSceneSelectString = (AddonCutSceneSelectString*)args.Addon;
|
||||
CutsceneSelectStringPostSetup(addonCutSceneSelectString);
|
||||
}
|
||||
|
||||
private unsafe void CutsceneSelectStringPostSetup(AddonCutSceneSelectString* addonCutSceneSelectString)
|
||||
{
|
||||
string? actualPrompt = addonCutSceneSelectString->AtkUnitBase.AtkValues[2].ReadAtkString();
|
||||
if (actualPrompt == null)
|
||||
return;
|
||||
|
||||
List<string?> answers = new();
|
||||
for (int i = 5; i < addonCutSceneSelectString->AtkUnitBase.AtkValuesCount; ++i)
|
||||
answers.Add(addonCutSceneSelectString->AtkUnitBase.AtkValues[i].ReadAtkString());
|
||||
|
||||
int? answer = HandleListChoice(actualPrompt, answers);
|
||||
if (answer != null)
|
||||
{
|
||||
_questController.IncreaseDialogueChoicesSelected();
|
||||
addonCutSceneSelectString->AtkUnitBase.FireCallbackInt(answer.Value);
|
||||
}
|
||||
}
|
||||
|
||||
private unsafe void SelectIconStringPostSetup(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
AddonSelectIconString* addonSelectIconString = (AddonSelectIconString*)args.Addon;
|
||||
SelectIconStringPostSetup(addonSelectIconString);
|
||||
}
|
||||
|
||||
private unsafe void SelectIconStringPostSetup(AddonSelectIconString* addonSelectIconString)
|
||||
{
|
||||
string? actualPrompt = addonSelectIconString->AtkUnitBase.AtkValues[3].ReadAtkString();
|
||||
if (string.IsNullOrEmpty(actualPrompt))
|
||||
actualPrompt = null;
|
||||
|
||||
List<string?> answers = new();
|
||||
for (ushort i = 0; i < addonSelectIconString->AtkUnitBase.AtkValues[5].Int; i++)
|
||||
answers.Add(addonSelectIconString->AtkUnitBase.AtkValues[i * 3 + 7].ReadAtkString());
|
||||
|
||||
int? answer = HandleListChoice(actualPrompt, answers);
|
||||
if (answer != null)
|
||||
{
|
||||
_questController.IncreaseDialogueChoicesSelected();
|
||||
addonSelectIconString->AtkUnitBase.FireCallbackInt(answer.Value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private int? HandleListChoice(string? actualPrompt, List<string?> answers)
|
||||
{
|
||||
var currentQuest = _questController.CurrentQuest;
|
||||
if (currentQuest == null)
|
||||
return;
|
||||
{
|
||||
_pluginLog.Information("Ignoring list choice, no active quest");
|
||||
return null;
|
||||
}
|
||||
|
||||
var quest = currentQuest.Quest;
|
||||
var step = quest.FindSequence(currentQuest.Sequence)?.FindStep(currentQuest.Step);
|
||||
if (step == null)
|
||||
return;
|
||||
{
|
||||
_pluginLog.Information("Ignoring list choice, no active step");
|
||||
return null;
|
||||
}
|
||||
|
||||
foreach (DialogueChoice dialogueChoice in step.DialogueChoices)
|
||||
foreach (var dialogueChoice in step.DialogueChoices)
|
||||
{
|
||||
if (dialogueChoice.Answer == null)
|
||||
continue;
|
||||
|
||||
string? excelPrompt =
|
||||
_gameFunctions.GetExcelString(quest, dialogueChoice.ExcelSheet, dialogueChoice.Prompt);
|
||||
string? excelAnswer =
|
||||
_gameFunctions.GetExcelString(quest, dialogueChoice.ExcelSheet, dialogueChoice.Answer);
|
||||
if (excelPrompt == null || actualPrompt != excelPrompt)
|
||||
continue;
|
||||
|
||||
for (int i = 5; i < addonCutSceneSelectString->AtkUnitBase.AtkValuesCount; ++i)
|
||||
{
|
||||
string? actualAnswer = addonCutSceneSelectString->AtkUnitBase.AtkValues[i].ReadAtkString();
|
||||
if (actualAnswer == null || actualAnswer != excelAnswer)
|
||||
continue;
|
||||
_pluginLog.Information("Ignoring entry in DialogueChoices, no answer");
|
||||
continue;
|
||||
}
|
||||
|
||||
_questController.IncreaseDialogueChoicesSelected();
|
||||
addonCutSceneSelectString->AtkUnitBase.FireCallbackInt(i - 5);
|
||||
return;
|
||||
string? excelPrompt = null, excelAnswer;
|
||||
switch (dialogueChoice.Type)
|
||||
{
|
||||
case EDialogChoiceType.ContentTalkList:
|
||||
if (dialogueChoice.Prompt != null)
|
||||
{
|
||||
excelPrompt =
|
||||
_gameFunctions.GetContentTalk(uint.Parse(dialogueChoice.Prompt,
|
||||
CultureInfo.InvariantCulture));
|
||||
}
|
||||
|
||||
excelAnswer =
|
||||
_gameFunctions.GetContentTalk(uint.Parse(dialogueChoice.Answer, CultureInfo.InvariantCulture));
|
||||
break;
|
||||
case EDialogChoiceType.List:
|
||||
if (dialogueChoice.Prompt != null)
|
||||
{
|
||||
excelPrompt =
|
||||
_gameFunctions.GetDialogueText(quest, dialogueChoice.ExcelSheet, dialogueChoice.Prompt);
|
||||
}
|
||||
|
||||
excelAnswer =
|
||||
_gameFunctions.GetDialogueText(quest, dialogueChoice.ExcelSheet, dialogueChoice.Answer);
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
|
||||
if (actualPrompt == null && !string.IsNullOrEmpty(excelPrompt))
|
||||
{
|
||||
_pluginLog.Information($"Unexpected excelPrompt: {excelPrompt}");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (actualPrompt != null && (excelPrompt == null || !GameStringEquals(actualPrompt, excelPrompt)))
|
||||
{
|
||||
_pluginLog.Information($"Unexpected excelPrompt: {excelPrompt}, actualPrompt: {actualPrompt}");
|
||||
continue;
|
||||
}
|
||||
|
||||
for (int i = 0; i < answers.Count; ++i)
|
||||
{
|
||||
if (GameStringEquals(answers[i], excelAnswer))
|
||||
{
|
||||
_pluginLog.Information($"Returning {i}: '{answers[i]}' for '{actualPrompt}'");
|
||||
return i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_pluginLog.Information($"No matching answer found for {actualPrompt}.");
|
||||
return null;
|
||||
}
|
||||
|
||||
private unsafe void SelectYesnoPostSetup(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
AddonSelectYesno* addonSelectYesno = (AddonSelectYesno*)args.Addon;
|
||||
SelectYesnoPostSetup(addonSelectYesno);
|
||||
}
|
||||
|
||||
private unsafe void SelectYesnoPostSetup(AddonSelectYesno* addonSelectYesno)
|
||||
{
|
||||
string? actualPrompt = addonSelectYesno->AtkUnitBase.AtkValues[0].ReadAtkString();
|
||||
if (actualPrompt == null)
|
||||
return;
|
||||
@ -147,9 +255,22 @@ internal sealed class GameUiController : IDisposable
|
||||
_pluginLog.Verbose($"DefaultYesNo: Choice count: {step.DialogueChoices.Count}");
|
||||
foreach (var dialogueChoice in step.DialogueChoices)
|
||||
{
|
||||
string? excelPrompt =
|
||||
_gameFunctions.GetExcelString(quest, dialogueChoice.ExcelSheet, dialogueChoice.Prompt);
|
||||
if (excelPrompt == null || actualPrompt != excelPrompt)
|
||||
string? excelPrompt;
|
||||
switch (dialogueChoice.Type)
|
||||
{
|
||||
case EDialogChoiceType.ContentTalkYesNo:
|
||||
excelPrompt =
|
||||
_gameFunctions.GetContentTalk(uint.Parse(dialogueChoice.Prompt, CultureInfo.InvariantCulture));
|
||||
break;
|
||||
case EDialogChoiceType.YesNo:
|
||||
excelPrompt =
|
||||
_gameFunctions.GetDialogueText(quest, dialogueChoice.ExcelSheet, dialogueChoice.Prompt);
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
|
||||
if (excelPrompt == null || !GameStringEquals(actualPrompt, excelPrompt))
|
||||
continue;
|
||||
|
||||
addonSelectYesno->AtkUnitBase.FireCallbackInt(dialogueChoice.Yes ? 0 : 1);
|
||||
@ -174,7 +295,7 @@ internal sealed class GameUiController : IDisposable
|
||||
if (step != null)
|
||||
_pluginLog.Verbose($"Current step: {step.TerritoryId}, {step.TargetTerritoryId}");
|
||||
|
||||
if (step == null || step.TargetTerritoryId == null || step.TerritoryId != _clientState.TerritoryType)
|
||||
if (step == null || step.TargetTerritoryId == null)
|
||||
{
|
||||
_pluginLog.Verbose("TravelYesNo: Checking previous step...");
|
||||
step = sequence.FindStep(currentQuest.Step == 255 ? (sequence.Steps.Count - 1) : (currentQuest.Step - 1));
|
||||
@ -184,7 +305,7 @@ internal sealed class GameUiController : IDisposable
|
||||
_pluginLog.Verbose($"Previous step: {step.TerritoryId}, {step.TargetTerritoryId}");
|
||||
}
|
||||
|
||||
if (step == null || step.TargetTerritoryId == null || step.TerritoryId != _clientState.TerritoryType)
|
||||
if (step == null || step.TargetTerritoryId == null)
|
||||
{
|
||||
_pluginLog.Verbose("TravelYesNo: Not found");
|
||||
return false;
|
||||
@ -196,7 +317,7 @@ internal sealed class GameUiController : IDisposable
|
||||
foreach (var entry in warps)
|
||||
{
|
||||
string? excelPrompt = entry.Question?.ToString();
|
||||
if (excelPrompt == null || excelPrompt != actualPrompt)
|
||||
if (excelPrompt == null || !GameStringEquals(excelPrompt, actualPrompt))
|
||||
{
|
||||
_pluginLog.Information($"Ignoring prompt '{excelPrompt}'");
|
||||
continue;
|
||||
@ -229,11 +350,26 @@ internal sealed class GameUiController : IDisposable
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ensures characters like '-' are handled equally in both strings.
|
||||
/// </summary>
|
||||
private bool GameStringEquals(string? a, string? b)
|
||||
{
|
||||
if (a == null)
|
||||
return b == null;
|
||||
|
||||
if (b == null)
|
||||
return false;
|
||||
|
||||
return a.ReplaceLineEndings().Replace('\u2013', '-') == b.ReplaceLineEndings().Replace('\u2013', '-');
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "AkatsukiNote", UnendingCodexPostSetup);
|
||||
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "Credit", CreditPostSetup);
|
||||
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "SelectYesno", SelectYesnoPostSetup);
|
||||
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "SelectIconString", SelectIconStringPostSetup);
|
||||
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "CutSceneSelectString", CutsceneSelectStringPostSetup);
|
||||
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "SelectString", SelectStringPostSetup);
|
||||
}
|
||||
|
@ -88,7 +88,7 @@ internal sealed class MovementController : IDisposable
|
||||
}
|
||||
}
|
||||
|
||||
_navmeshIpc.MoveTo(navPoints);
|
||||
_navmeshIpc.MoveTo(navPoints, Destination.IsFlying);
|
||||
ResetPathfinding();
|
||||
}
|
||||
else if (_pathfindTask.IsCompleted)
|
||||
@ -166,6 +166,7 @@ internal sealed class MovementController : IDisposable
|
||||
|
||||
public void NavigateTo(EMovementType type, uint? dataId, Vector3 to, bool fly, bool sprint, float? stopDistance = null)
|
||||
{
|
||||
fly |= _condition[ConditionFlag.Diving];
|
||||
PrepareNavigation(type, dataId, to, fly, sprint, stopDistance);
|
||||
_pluginLog.Information($"Pathfinding to {Destination}");
|
||||
|
||||
@ -177,10 +178,11 @@ internal sealed class MovementController : IDisposable
|
||||
|
||||
public void NavigateTo(EMovementType type, uint? dataId, List<Vector3> to, bool fly, bool sprint, float? stopDistance)
|
||||
{
|
||||
fly |= _condition[ConditionFlag.Diving];
|
||||
PrepareNavigation(type, dataId, to.Last(), fly, sprint, stopDistance);
|
||||
|
||||
_pluginLog.Information($"Moving to {Destination}");
|
||||
_navmeshIpc.MoveTo(to);
|
||||
_navmeshIpc.MoveTo(to, fly);
|
||||
}
|
||||
|
||||
public void ResetPathfinding()
|
||||
|
@ -513,11 +513,6 @@ internal sealed class QuestController
|
||||
// navmesh won't move close enough
|
||||
if (actualDistance > distance)
|
||||
{
|
||||
// picking up Mehvan's baby, not sure if navmesh ignores y distance but it thinks you're close
|
||||
// enough
|
||||
if (step.DataId == 2012208)
|
||||
distance /= 2;
|
||||
|
||||
_movementController.NavigateTo(EMovementType.Quest, step.DataId, [step.Position.Value],
|
||||
fly: step.Fly == true && _gameFunctions.IsFlyingUnlocked(_clientState.TerritoryType),
|
||||
sprint: step.Sprint != false,
|
||||
@ -670,7 +665,7 @@ internal sealed class QuestController
|
||||
|
||||
if (step.ChatMessage != null)
|
||||
{
|
||||
string? excelString = _gameFunctions.GetExcelString(CurrentQuest.Quest, step.ChatMessage.ExcelSheet,
|
||||
string? excelString = _gameFunctions.GetDialogueText(CurrentQuest.Quest, step.ChatMessage.ExcelSheet,
|
||||
step.ChatMessage.Key);
|
||||
if (excelString == null)
|
||||
return;
|
||||
|
4
Questionable/External/NavmeshIpc.cs
vendored
4
Questionable/External/NavmeshIpc.cs
vendored
@ -60,11 +60,11 @@ internal sealed class NavmeshIpc
|
||||
return _navPathfind.InvokeFunc(localPlayerPosition, targetPosition, fly, cancellationToken);
|
||||
}
|
||||
|
||||
public void MoveTo(List<Vector3> position)
|
||||
public void MoveTo(List<Vector3> position, bool fly)
|
||||
{
|
||||
Stop();
|
||||
|
||||
_pathMoveTo.InvokeAction(position, false);
|
||||
_pathMoveTo.InvokeAction(position, fly);
|
||||
}
|
||||
|
||||
public Vector3? GetPointOnFloor(Vector3 position)
|
||||
|
@ -10,6 +10,7 @@ using Dalamud.Game;
|
||||
using Dalamud.Game.ClientState.Conditions;
|
||||
using Dalamud.Game.ClientState.Objects;
|
||||
using Dalamud.Plugin.Services;
|
||||
using Dalamud.Utility;
|
||||
using FFXIVClientStructs.FFXIV.Application.Network.WorkDefinitions;
|
||||
using FFXIVClientStructs.FFXIV.Client.Game;
|
||||
using FFXIVClientStructs.FFXIV.Client.Game.Control;
|
||||
@ -474,7 +475,7 @@ internal sealed unsafe class GameFunctions
|
||||
_pluginLog.Error($"Could not find content for content finder condition (cf: {contentFinderConditionId})");
|
||||
}
|
||||
|
||||
public string? GetExcelString(Quest currentQuest, string? excelSheetName, string key)
|
||||
public string? GetDialogueText(Quest currentQuest, string? excelSheetName, string key)
|
||||
{
|
||||
if (excelSheetName == null)
|
||||
{
|
||||
@ -495,6 +496,12 @@ internal sealed unsafe class GameFunctions
|
||||
return null;
|
||||
}
|
||||
|
||||
return excelSheet.FirstOrDefault(x => x.Key == key)?.Value?.ToString();
|
||||
return excelSheet.FirstOrDefault(x => x.Key == key)?.Value?.ToDalamudString().ToString();
|
||||
}
|
||||
|
||||
public string? GetContentTalk(uint rowId)
|
||||
{
|
||||
var questRow = _dataManager.GetExcelSheet<ContentTalk>()!.GetRow(rowId);
|
||||
return questRow?.Text?.ToString();
|
||||
}
|
||||
}
|
||||
|
@ -8,5 +8,7 @@ public sealed class DialogueChoiceTypeConverter() : EnumConverter<EDialogChoiceT
|
||||
{
|
||||
{ EDialogChoiceType.YesNo, "YesNo" },
|
||||
{ EDialogChoiceType.List, "List" },
|
||||
{ EDialogChoiceType.ContentTalkYesNo, "ContentTalkYesNo" },
|
||||
{ EDialogChoiceType.ContentTalkList, "ContentTalkList" },
|
||||
};
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ public class DialogueChoice
|
||||
[JsonConverter(typeof(DialogueChoiceTypeConverter))]
|
||||
public EDialogChoiceType Type { get; set; }
|
||||
public string? ExcelSheet { get; set; }
|
||||
public string Prompt { get; set; } = null!;
|
||||
public string? Prompt { get; set; } = null!;
|
||||
public bool Yes { get; set; } = true;
|
||||
public string? Answer { get; set; }
|
||||
}
|
||||
|
@ -4,5 +4,7 @@ public enum EDialogChoiceType
|
||||
{
|
||||
None,
|
||||
YesNo,
|
||||
List
|
||||
List,
|
||||
ContentTalkYesNo,
|
||||
ContentTalkList,
|
||||
}
|
||||
|
@ -56,14 +56,17 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
||||
_questController = new QuestController(pluginInterface, dataManager, _clientState, _gameFunctions,
|
||||
_movementController, pluginLog, condition, chatGui, framework, gameGui, aetheryteData, lifestreamIpc);
|
||||
_gameUiController =
|
||||
new GameUiController(clientState, addonLifecycle, dataManager, _gameFunctions, _questController, pluginLog);
|
||||
new GameUiController(clientState, addonLifecycle, dataManager, _gameFunctions, _questController, gameGui,
|
||||
pluginLog);
|
||||
|
||||
_windowSystem.AddWindow(new DebugWindow(_movementController, _questController, _gameFunctions, clientState,
|
||||
targetManager));
|
||||
framework, targetManager, _gameUiController));
|
||||
|
||||
_pluginInterface.UiBuilder.Draw += _windowSystem.Draw;
|
||||
_framework.Update += FrameworkUpdate;
|
||||
_commandManager.AddHandler("/qst", new CommandInfo(ProcessCommand));
|
||||
|
||||
_framework.RunOnTick(() => _gameUiController.HandleCurrentDialogueChoices(), TimeSpan.FromMilliseconds(200));
|
||||
}
|
||||
|
||||
private void FrameworkUpdate(IFramework framework)
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Globalization;
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Numerics;
|
||||
using Dalamud.Game.ClientState.Objects;
|
||||
using Dalamud.Interface;
|
||||
@ -21,18 +22,22 @@ internal sealed class DebugWindow : Window
|
||||
private readonly QuestController _questController;
|
||||
private readonly GameFunctions _gameFunctions;
|
||||
private readonly IClientState _clientState;
|
||||
private readonly IFramework _framework;
|
||||
private readonly ITargetManager _targetManager;
|
||||
private readonly GameUiController _gameUiController;
|
||||
|
||||
public DebugWindow(MovementController movementController, QuestController questController,
|
||||
GameFunctions gameFunctions, IClientState clientState,
|
||||
ITargetManager targetManager)
|
||||
GameFunctions gameFunctions, IClientState clientState, IFramework framework,
|
||||
ITargetManager targetManager, GameUiController gameUiController)
|
||||
: base("Questionable", ImGuiWindowFlags.AlwaysAutoResize)
|
||||
{
|
||||
_movementController = movementController;
|
||||
_questController = questController;
|
||||
_gameFunctions = gameFunctions;
|
||||
_clientState = clientState;
|
||||
_framework = framework;
|
||||
_targetManager = targetManager;
|
||||
_gameUiController = gameUiController;
|
||||
|
||||
IsOpen = true;
|
||||
SizeConstraints = new WindowSizeConstraints
|
||||
@ -230,6 +235,10 @@ internal sealed class DebugWindow : Window
|
||||
ImGui.EndDisabled();
|
||||
|
||||
if (ImGui.Button("Reload Data"))
|
||||
{
|
||||
_questController.Reload();
|
||||
_framework.RunOnTick(() => _gameUiController.HandleCurrentDialogueChoices(),
|
||||
TimeSpan.FromMilliseconds(200));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user