Assignment(nameof(ComplexCombatData.DataId), complexCombatData.DataId,
emptyData.DataId)
.AsSyntaxNodeOrToken(),
+ Assignment(nameof(ComplexCombatData.NameId), complexCombatData.NameId,
+ emptyData.NameId)
+ .AsSyntaxNodeOrToken(),
Assignment(nameof(ComplexCombatData.MinimumKillCount),
complexCombatData.MinimumKillCount, emptyData.MinimumKillCount)
.AsSyntaxNodeOrToken(),
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "TerritoryId": 137,
+ "InteractionType": "EquipItem",
+ "ItemId": 4542,
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] The Chamber of Rule"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 131
+ ]
+ }
+ }
+ },
+ {
+ "DataId": 1006747,
+ "Position": {
+ "X": -20.828613,
+ "Y": 29.999964,
+ "Z": -2.4262085
+ },
+ "TerritoryId": 131,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "Position": {
+ "X": -259.72705,
+ "Y": 67.23717,
+ "Z": -293.5509
+ },
+ "TerritoryId": 180,
+ "InteractionType": "WalkTo",
+ "AetheryteShortcut": "Outer La Noscea - Camp Overlook",
+ "Fly": true,
+ "SkipConditions": {
+ "StepIf": {
+ "Flying": "Locked"
+ }
+ }
+ },
+ {
+ "Position": {
+ "X": -355.4327,
+ "Y": 63.813503,
+ "Z": -382.56308
+ },
+ "TerritoryId": 180,
+ "InteractionType": "WalkTo",
+ "Fly": true,
+ "SkipConditions": {
+ "StepIf": {
+ "Flying": "Locked"
+ }
+ }
+ },
+ {
+ "DataId": 2002346,
+ "Position": {
+ "X": -312.27594,
+ "Y": 32.547485,
+ "Z": -444.9989
+ },
+ "TerritoryId": 180,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AfterInteraction",
+ "ComplexCombatData": [
+ {
+ "DataId": 6,
+ "NameId": 2020
+ }
+ ],
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1006747,
+ "Position": {
+ "X": -20.828613,
+ "Y": 29.999964,
+ "Z": -2.4262085
+ },
+ "TerritoryId": 131,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] The Chamber of Rule"
+ ],
+ "NextQuestId": 1057
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1006747,
+ "Position": {
+ "X": -20.828613,
+ "Y": 29.999964,
+ "Z": -2.4262085
+ },
+ "TerritoryId": 131,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] The Chamber of Rule"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 131
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 2002347,
+ "Position": {
+ "X": 175.82971,
+ "Y": -10.452454,
+ "Z": 84.91638
+ },
+ "TerritoryId": 145,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AfterInteraction",
+ "KillEnemyDataIds": [
+ 383
+ ],
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1006747,
+ "Position": {
+ "X": -20.828613,
+ "Y": 29.999964,
+ "Z": -2.4262085
+ },
+ "TerritoryId": 131,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] The Chamber of Rule"
+ ],
+ "NextQuestId": 1058
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1006747,
+ "Position": {
+ "X": -20.828613,
+ "Y": 29.999964,
+ "Z": -2.4262085
+ },
+ "TerritoryId": 131,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] The Chamber of Rule"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 131
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "Position": {
+ "X": -97.65164,
+ "Y": 14.866778,
+ "Z": -189.99821
+ },
+ "StopDistance": 0.5,
+ "TerritoryId": 146,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [
+ 1923,
+ 1924
+ ],
+ "AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo",
+ "Fly": true,
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true
+ },
+ "StepIf": {
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ }
+ }
+ },
+ {
+ "DataId": 2002349,
+ "Position": {
+ "X": -97.39838,
+ "Y": 14.846985,
+ "Z": -188.2201
+ },
+ "TerritoryId": 146,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ },
+ {
+ "Position": {
+ "X": -97.35628,
+ "Y": -14.397484,
+ "Z": -176.70825
+ },
+ "StopDistance": 0.5,
+ "TerritoryId": 146,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [
+ 1923,
+ 1924
+ ],
+ "Fly": true,
+ "SkipConditions": {
+ "StepIf": {
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ }
+ }
+ },
+ {
+ "DataId": 2002348,
+ "Position": {
+ "X": -99.4126,
+ "Y": -14.4198,
+ "Z": -179.46143
+ },
+ "TerritoryId": 146,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ },
+ {
+ "Position": {
+ "X": 137.78966,
+ "Y": 10.371678,
+ "Z": -427.8172
+ },
+ "StopDistance": 0.5,
+ "TerritoryId": 146,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [
+ 1923,
+ 1924
+ ],
+ "SkipConditions": {
+ "StepIf": {
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 16
+ ]
+ }
+ }
+ },
+ {
+ "Position": {
+ "X": 137.78966,
+ "Y": 10.371678,
+ "Z": -427.8172
+ },
+ "StopDistance": 0.5,
+ "TerritoryId": 146,
+ "InteractionType": "WalkTo",
+ "SkipConditions": {
+ "StepIf": {
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 16
+ ]
+ }
+ }
+ },
+ {
+ "DataId": 2002351,
+ "Position": {
+ "X": 137.74304,
+ "Y": 10.60498,
+ "Z": -420.5539
+ },
+ "TerritoryId": 146,
+ "InteractionType": "Interact",
+ "DisableNavmesh": true,
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 16
+ ]
+ },
+ {
+ "Position": {
+ "X": 137.70113,
+ "Y": 10.371678,
+ "Z": -427.45047
+ },
+ "TerritoryId": 146,
+ "InteractionType": "WalkTo",
+ "DisableNavmesh": true
+ },
+ {
+ "Position": {
+ "X": 116.208305,
+ "Y": 11.091853,
+ "Z": -475.35126
+ },
+ "StopDistance": 0.5,
+ "TerritoryId": 146,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [
+ 1923,
+ 1924
+ ]
+ },
+ {
+ "DataId": 2002350,
+ "Position": {
+ "X": 115.983765,
+ "Y": 11.184814,
+ "Z": -482.7802
+ },
+ "TerritoryId": 146,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1006747,
+ "Position": {
+ "X": -20.828613,
+ "Y": 29.999964,
+ "Z": -2.4262085
+ },
+ "TerritoryId": 131,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] The Chamber of Rule"
+ ],
+ "NextQuestId": 1059
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1006747,
+ "Position": {
+ "X": -20.828613,
+ "Y": 29.999964,
+ "Z": -2.4262085
+ },
+ "TerritoryId": 131,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] The Chamber of Rule"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 131
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 2002356,
+ "Position": {
+ "X": -407.4312,
+ "Y": 7.156433,
+ "Z": 525.6886
+ },
+ "TerritoryId": 146,
+ "InteractionType": "SinglePlayerDuty",
+ "AetheryteShortcut": "Southern Thanalan - Forgotten Springs",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1006747,
+ "Position": {
+ "X": -20.828613,
+ "Y": 29.999964,
+ "Z": -2.4262085
+ },
+ "TerritoryId": 131,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] The Chamber of Rule"
+ ],
+ "NextQuestId": 1060
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1006747,
+ "Position": {
+ "X": -20.828613,
+ "Y": 29.999964,
+ "Z": -2.4262085
+ },
+ "TerritoryId": 131,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] The Chamber of Rule"
+ ],
+ "SkipConditions": {
+ "AetheryteShortcutIf": {
+ "InSameTerritory": true,
+ "InTerritory": [
+ 131
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1007829,
+ "Position": {
+ "X": 26.932129,
+ "Y": 13,
+ "Z": 44.418945
+ },
+ "TerritoryId": 141,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Central Thanalan - Black Brush Station",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "Position": {
+ "X": -775.4471,
+ "Y": 224.95006,
+ "Z": 29.04266
+ },
+ "StopDistance": 0.5,
+ "TerritoryId": 155,
+ "InteractionType": "WalkTo",
+ "AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead",
+ "Fly": true
+ },
+ {
+ "Position": {
+ "X": -775.4471,
+ "Y": 224.95006,
+ "Z": 29.04266
+ },
+ "StopDistance": 0.5,
+ "TerritoryId": 155,
+ "InteractionType": "SinglePlayerDuty",
+ "Mount": false
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1006747,
+ "Position": {
+ "X": -20.828613,
+ "Y": 29.999964,
+ "Z": -2.4262085
+ },
+ "TerritoryId": 131,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Ul'dah",
+ "AethernetShortcut": [
+ "[Ul'dah] Aetheryte Plaza",
+ "[Ul'dah] The Chamber of Rule"
+ ],
+ "NextQuestId": 2032
+ }
+ ]
+ }
+ ]
+}
"description": "The enemy data id which is supposed to be killed",
"type": "integer"
},
+ "NameId": {
+ "description": "Name id of the enemy which is supposed to be killed, helpful if multiple nearby enemies share the same DataId",
+ "type": "integer"
+ },
"MinimumKillCount": {
"description": "Overworld mobs: If this number of mobs has been killed, will wait a bit before attempting to pull another mob to see if the quest progresses",
"type": "integer"
public sealed class ComplexCombatData
{
public uint DataId { get; set; }
+ public uint? NameId { get; set; }
// TODO Use this
public uint? MinimumKillCount { get; set; }
if (_currentFight.Data.CompletedComplexDatas.Contains(i))
continue;
- if (complexCombatData[i].DataId == battleNpc.DataId)
+ if (complexCombatData[i].DataId == battleNpc.DataId &&
+ (complexCombatData[i].NameId == null || complexCombatData[i].NameId == battleNpc.NameId))
return 100;
}
}
if (gameObjectStruct->NamePlateIconId is 60093 or 60732)
return 0;
- var enemyData = _currentFight.Data.ComplexCombatDatas.FirstOrDefault(x => x.DataId == battleNpc.DataId);
+ var enemyData = _currentFight.Data.ComplexCombatDatas
+ .FirstOrDefault(x => x.DataId == battleNpc.DataId &&
+ (x.NameId == null || x.NameId == battleNpc.NameId));
if (enemyData is { IgnoreQuestMarker: true })
{
if (battleNpc.StatusFlags.HasFlag(StatusFlags.InCombat))
}
if (_combatData.KillEnemyDataIds.Contains(nextTarget.DataId) ||
- _combatData.ComplexCombatDatas.Any(x => x.DataId == nextTarget.DataId))
+ _combatData.ComplexCombatDatas.Any(x => x.DataId == nextTarget.DataId &&
+ (x.NameId == null || (nextTarget is ICharacter character && x.NameId == character.NameId))))
{
if (_isDoingRotation)
{
using Dalamud.Interface.Components;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game;
+using FFXIVClientStructs.FFXIV.Client.Game.Character;
using FFXIVClientStructs.FFXIV.Client.Game.Control;
using FFXIVClientStructs.FFXIV.Client.Game.Event;
using FFXIVClientStructs.FFXIV.Client.Game.Object;
private unsafe void DrawTargetDetails(IGameObject target)
{
+ string nameId = string.Empty;
+ if (target is ICharacter character)
+ nameId = $"; n={character.NameId}";
+
ImGui.Separator();
ImGui.Text(string.Create(CultureInfo.InvariantCulture,
- $"Target: {target.Name} ({target.ObjectKind}; {target.DataId})"));
+ $"Target: {target.Name} ({target.ObjectKind}; {target.DataId}{nameId})"));
if (_clientState.LocalPlayer != null)
{