Merge branch 'master' into master

This commit is contained in:
MDlumia 2024-09-23 19:57:47 +00:00
commit 2f20652454
27 changed files with 970 additions and 96 deletions

View File

@ -1,5 +1,5 @@
<Project>
<PropertyGroup>
<Version>3.6</Version>
<Version>3.7</Version>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,28 @@
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Questing;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class PurchaseMenuExtensions
{
public static ExpressionSyntax ToExpressionSyntax(this PurchaseMenu purchaseMenu)
{
PurchaseMenu emptyMenu = new();
return ObjectCreationExpression(
IdentifierName(nameof(PurchaseMenu)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(PurchaseMenu.ExcelSheet), purchaseMenu.ExcelSheet,
emptyMenu.ExcelSheet)
.AsSyntaxNodeOrToken(),
Assignment(nameof(PurchaseMenu.Key), purchaseMenu.Key,
emptyMenu.Key)
.AsSyntaxNodeOrToken()))));
}
}

View File

@ -57,6 +57,7 @@ public static class RoslynShortcuts
DialogueChoice dialogueChoice => dialogueChoice.ToExpressionSyntax(),
JumpDestination jumpDestination => jumpDestination.ToExpressionSyntax(),
ExcelRef excelRef => excelRef.ToExpressionSyntax(),
PurchaseMenu purchaseMenu => purchaseMenu.ToExpressionSyntax(),
ComplexCombatData complexCombatData => complexCombatData.ToExpressionSyntax(),
QuestWorkValue questWorkValue => questWorkValue.ToExpressionSyntax(),
List<QuestWorkValue> list => list.ToExpressionSyntax(), // TODO fix in AssignmentList

View File

@ -0,0 +1,91 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 2006639,
"Position": {
"X": -270.3136,
"Y": -13.962036,
"Z": -635.2484
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
},
{
"DataId": 2006642,
"Position": {
"X": -245.41089,
"Y": -13.229614,
"Z": -608.2704
},
"TerritoryId": 401,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [5236],
"Fly": true
},
{
"DataId": 2006640,
"Position": {
"X": -82.230896,
"Y": -10.727112,
"Z": -637.90344
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
},
{
"DataId": 2006641,
"Position": {
"X": -24.765442,
"Y": 5.3253784,
"Z": -657.70966
},
"TerritoryId": 401,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [5236],
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,110 @@
{
"$schema": "https://git.carvel.li/plogon_enjoyer/Questionable/raw/branch/temp/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 2006645,
"Position": {
"X": -473.10602,
"Y": -56.01587,
"Z": -624.1398
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
},
{
"DataId": 2006644,
"Position": {
"X": -365.92664,
"Y": -57.053528,
"Z": -579.553
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
},
{
"DataId": 2006643,
"Position": {
"X": -381.9486,
"Y": -56.50421,
"Z": -521.8433
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "Interact",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1012056,
"Position": {
"X": -658.89984,
"Y": -127.78361,
"Z": 622.98
},
"TerritoryId": 401,
"InteractionType": "Interact",
"AetheryteShortcut": "The Sea of Clouds - Camp Cloudtop",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "Interact",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]
}
]
}

View File

@ -102,17 +102,6 @@
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": -660.26556,
"Y": -49.27812,
"Z": -403.1036
},
"TerritoryId": 401,
"InteractionType": "WalkTo",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
},
{
"DataId": 1016091,
"Position": {
@ -122,6 +111,7 @@
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]

View File

@ -78,17 +78,6 @@
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": -660.26556,
"Y": -49.27812,
"Z": -403.1036
},
"TerritoryId": 401,
"InteractionType": "WalkTo",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
},
{
"DataId": 1016090,
"Position": {
@ -98,6 +87,7 @@
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]

View File

@ -81,17 +81,6 @@
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": -660.26556,
"Y": -49.27812,
"Z": -403.1036
},
"TerritoryId": 401,
"InteractionType": "WalkTo",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
},
{
"DataId": 1016090,
"Position": {
@ -101,6 +90,7 @@
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]

View File

@ -101,17 +101,6 @@
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": -660.26556,
"Y": -49.27812,
"Z": -403.1036
},
"TerritoryId": 401,
"InteractionType": "WalkTo",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
},
{
"DataId": 1016092,
"Position": {
@ -121,6 +110,7 @@
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]

View File

@ -67,17 +67,6 @@
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": -660.26556,
"Y": -49.27812,
"Z": -403.1036
},
"TerritoryId": 401,
"InteractionType": "WalkTo",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
},
{
"DataId": 1016092,
"Position": {
@ -87,6 +76,7 @@
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]

View File

@ -73,17 +73,6 @@
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": -660.26556,
"Y": -49.27812,
"Z": -403.1036
},
"TerritoryId": 401,
"InteractionType": "WalkTo",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
},
{
"DataId": 1016092,
"Position": {
@ -93,6 +82,7 @@
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]

View File

@ -84,26 +84,6 @@
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": 297.20715,
"Y": 106.011185,
"Z": -25.524097
},
"TerritoryId": 401,
"InteractionType": "WalkTo"
},
{
"Position": {
"X": -660.26556,
"Y": -49.27812,
"Z": -403.1036
},
"TerritoryId": 401,
"InteractionType": "WalkTo",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
},
{
"DataId": 1016092,
"Position": {
@ -113,6 +93,7 @@
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]

View File

@ -0,0 +1,107 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1016241,
"Position": {
"X": -182.94049,
"Y": 213.612,
"Z": 204.57764
},
"TerritoryId": 401,
"InteractionType": "Emote",
"Emote": "sundropdance",
"Fly": true
},
{
"Position": {
"X": -182.94049,
"Y": 213.612,
"Z": 204.57764
},
"TerritoryId": 401,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"KillEnemyDataIds": [5235],
"CombatDelaySecondsAtStart": 0
},
{
"DataId": 1016239,
"Position": {
"X": -64.683044,
"Y": 212.9267,
"Z": 101.33508
},
"TerritoryId": 401,
"InteractionType": "Emote",
"Emote": "sundropdance",
"Fly": true
},
{
"DataId": 1016240,
"Position": {
"X": 233.23413,
"Y": 240.42369,
"Z": 118.30322
},
"TerritoryId": 401,
"InteractionType": "Emote",
"Emote": "sundropdance",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,103 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2006708,
"Position": {
"X": -198.41309,
"Y": 93.55298,
"Z": -303.88342
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 2006695,
"Position": {
"X": 111.46704,
"Y": -84.55023,
"Z": 429.83142
},
"TerritoryId": 401,
"InteractionType": "UseItem",
"ItemId": 2001927,
"Fly": true
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 2006696,
"Position": {
"X": 111.436646,
"Y": -83.024414,
"Z": 428.85486
},
"TerritoryId": 401,
"InteractionType": "Emote",
"Emote": "sundropdance"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,121 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1016093,
"Position": {
"X": -776.0281,
"Y": -133.35559,
"Z": -414.32825
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1016242,
"Position": {
"X": 284.19922,
"Y": 28.574171,
"Z": -636.3775
},
"TerritoryId": 401,
"InteractionType": "Action",
"Action": "Buffet (Sanuwa)",
"Fly": true
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1016378,
"Position": {
"X": 338.4298,
"Y": 31.483738,
"Z": -562.1882
},
"TerritoryId": 401,
"InteractionType": "Action",
"Action": "Buffet (Sanuwa)",
"Fly": true
}
]
},
{
"Sequence": 5,
"Steps": [
{
"DataId": 1016379,
"Position": {
"X": 501.27405,
"Y": 112.648964,
"Z": -182.97095
},
"TerritoryId": 401,
"InteractionType": "Action",
"Action": "Buffet (Sanuwa)",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,117 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016803,
"Position": {
"X": 57.297607,
"Y": -47.842846,
"Z": -174.63953
},
"TerritoryId": 398,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1016875,
"Position": {
"X": -274.09784,
"Y": -22.971008,
"Z": 22.812195
},
"TerritoryId": 398,
"InteractionType": "Interact",
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1016876,
"Position": {
"X": 148.48547,
"Y": 65.56322,
"Z": -644.09863
},
"TerritoryId": 398,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1016877,
"Position": {
"X": 212.23767,
"Y": 52.205494,
"Z": -777.676
},
"TerritoryId": 398,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1016878,
"Position": {
"X": 210.31506,
"Y": 59.655575,
"Z": -919.06616
},
"TerritoryId": 398,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 5,
"Steps": [
{
"DataId": 1016875,
"Position": {
"X": -274.09784,
"Y": -22.971008,
"Z": 22.812195
},
"TerritoryId": 398,
"InteractionType": "Interact",
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016803,
"Position": {
"X": 57.297607,
"Y": -47.842846,
"Z": -174.63953
},
"TerritoryId": 398,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,91 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016803,
"Position": {
"X": 57.297607,
"Y": -47.842846,
"Z": -174.63953
},
"TerritoryId": 398,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 2006945,
"Position": {
"X": 204.63867,
"Y": -106.43176,
"Z": 360.55542
},
"TerritoryId": 398,
"InteractionType": "Interact",
"Fly": true
},
{
"DataId": 2006947,
"Position": {
"X": 205.98145,
"Y": -109.544556,
"Z": 389.7306
},
"TerritoryId": 398,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [5549],
"Fly": true
},
{
"DataId": 2006948,
"Position": {
"X": 154.43652,
"Y": -112.50476,
"Z": 445.15137
},
"TerritoryId": 398,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [5549],
"Fly": true
},
{
"DataId": 2006946,
"Position": {
"X": 153.0022,
"Y": -86.289795,
"Z": 418.44812
},
"TerritoryId": 398,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016803,
"Position": {
"X": 57.297607,
"Y": -47.842846,
"Z": -174.63953
},
"TerritoryId": 398,
"InteractionType": "CompleteQuest",
"Fly": true,
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
}
]
}
]
}

View File

@ -0,0 +1,84 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1032735,
"Position": {
"X": 803.7993,
"Y": -45.924515,
"Z": -217.94464
},
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1032659,
"Position": {
"X": 802.79236,
"Y": -45.91779,
"Z": -218.58557
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"TerritoryId": 817,
"InteractionType": "Gather",
"ItemsToGather": [
{
"QuestAcceptedAsClass": "Miner",
"ItemId": 29515,
"ItemCount": 3
},
{
"QuestAcceptedAsClass": "Botanist",
"ItemId": 29541,
"ItemCount": 3
}
]
},
{
"DataId": 1032862,
"Position": {
"X": 777.06555,
"Y": -45.76794,
"Z": -209.21649
},
"TerritoryId": 817,
"InteractionType": "Interact",
"Fly": true,
"AetheryteShortcut": "Rak'tika - Fanow"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1032659,
"Position": {
"X": 802.79236,
"Y": -45.91779,
"Z": -218.58557
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,36 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1032660,
"Position": {
"X": 804.4098,
"Y": -45.9255,
"Z": -216.41876
},
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1032660,
"Position": {
"X": 804.4098,
"Y": -45.9255,
"Z": -216.41876
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,36 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1032659,
"Position": {
"X": 802.79236,
"Y": -45.91779,
"Z": -218.58557
},
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1032659,
"Position": {
"X": 802.79236,
"Y": -45.91779,
"Z": -218.58557
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -1,7 +1,6 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"Disabled": true,
"Author": "kaiser",
"QuestSequence": [
{
"Sequence": 0,
@ -30,11 +29,28 @@
{
"Sequence": 1,
"Steps": [
{
"DataId": 1044412,
"Position": {
"X": -181.56714,
"Y": -49.19972,
"Z": -304.76843
},
"StopDistance": 5,
"TerritoryId": 959,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"TerritoryId": 959,
"InteractionType": "Craft",
"ItemId": 38863,
"ItemCount": 3
},
{
"Position": {
"X": -201.42024,

View File

@ -579,6 +579,7 @@
"AfterInteraction",
"AfterItemUse",
"AfterAction",
"AfterEmote",
"OverworldEnemies",
"FateEnemies"
]
@ -807,7 +808,8 @@
"comfort",
"battlestance",
"doze",
"box"
"box",
"sundropdance"
]
}
}

View File

@ -36,5 +36,6 @@ public sealed class EmoteConverter() : EnumConverter<EEmote>(Values)
{ EEmote.BattleStance, "battlestance" },
{ EEmote.Doze, "doze" },
{ EEmote.Box, "box" },
{ EEmote.SundropDance, "sundropdance"}
};
}

View File

@ -10,6 +10,7 @@ public sealed class EnemySpawnTypeConverter() : EnumConverter<EEnemySpawnType>(V
{ EEnemySpawnType.AfterInteraction, "AfterInteraction" },
{ EEnemySpawnType.AfterItemUse, "AfterItemUse" },
{ EEnemySpawnType.AfterAction, "AfterAction" },
{ EEnemySpawnType.AfterEmote, "AfterEmote" },
{ EEnemySpawnType.AutoOnEnterArea, "AutoOnEnterArea" },
{ EEnemySpawnType.OverworldEnemies, "OverworldEnemies" },
{ EEnemySpawnType.FateEnemies, "FateEnemies" },

View File

@ -37,4 +37,5 @@ public enum EEmote
BattleStance = 121,
Doze = 13,
Box = 166,
SundropDance = 120,
}

View File

@ -10,6 +10,7 @@ public enum EEnemySpawnType
AfterInteraction,
AfterItemUse,
AfterAction,
AfterEmote,
AutoOnEnterArea,
OverworldEnemies,
FateEnemies,

View File

@ -33,17 +33,14 @@ internal static class Combat
switch (step.EnemySpawnType)
{
case EEnemySpawnType.AfterInteraction:
{
ArgumentNullException.ThrowIfNull(step.DataId);
yield return new Interact.Task(step.DataId.Value, quest, EInteractionType.None, true);
yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
yield return CreateTask(quest, sequence, step);
break;
}
case EEnemySpawnType.AfterItemUse:
{
ArgumentNullException.ThrowIfNull(step.DataId);
ArgumentNullException.ThrowIfNull(step.ItemId);
@ -52,10 +49,8 @@ internal static class Combat
yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
yield return CreateTask(quest, sequence, step);
break;
}
case EEnemySpawnType.AfterAction:
{
ArgumentNullException.ThrowIfNull(step.DataId);
ArgumentNullException.ThrowIfNull(step.Action);
@ -65,7 +60,18 @@ internal static class Combat
yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
yield return CreateTask(quest, sequence, step);
break;
}
case EEnemySpawnType.AfterEmote:
ArgumentNullException.ThrowIfNull(step.Emote);
yield return new Mount.UnmountTask();
if (step.DataId != null)
yield return new Emote.UseOnObject(step.Emote.Value, step.DataId.Value);
else
yield return new Emote.UseOnSelf(step.Emote.Value);
yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
yield return CreateTask(quest, sequence, step);
break;
case EEnemySpawnType.AutoOnEnterArea:
if (step.CombatDelaySecondsAtStart == null)