Compare commits

...

6 Commits

29 changed files with 1709 additions and 15 deletions

View File

@ -1,5 +1,5 @@
<Project>
<PropertyGroup>
<PropertyGroup Condition="$(MSBuildProjectName) != 'GatheringPathRenderer'">
<Version>4.13</Version>
</PropertyGroup>
</Project>

1
GatheringPathRenderer/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/dist

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<Project>
<Target Name="PackagePluginDebug" AfterTargets="Build" Condition="'$(Configuration)' == 'Debug'">
<DalamudPackager
ProjectDir="$(ProjectDir)"
OutputPath="$(OutputPath)"
AssemblyName="$(AssemblyName)"
MakeZip="false"
VersionComponents="2"/>
</Target>
<Target Name="PackagePlugin" AfterTargets="Build" Condition="'$(Configuration)' == 'Release'">
<DalamudPackager
ProjectDir="$(ProjectDir)"
OutputPath="$(OutputPath)"
AssemblyName="$(AssemblyName)"
MakeZip="true"
VersionComponents="2"
Exclude="GatheringPathRenderer.deps.json;ECommons.xml;ECommons.pdb;LLib.pdb"/>
</Target>
</Project>

View File

@ -1,4 +1,11 @@
<Project Sdk="Dalamud.NET.Sdk/11.0.0">
<PropertyGroup>
<Version>0.1</Version>
<OutputPath>dist</OutputPath>
<PathMap Condition="$(SolutionDir) != ''">$(SolutionDir)=X:\</PathMap>
<Platforms>x64</Platforms>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\LLib\LLib.csproj" />
<ProjectReference Include="..\Questionable.Model\Questionable.Model.csproj" />
@ -6,4 +13,5 @@
</ItemGroup>
<Import Project="..\LLib\LLib.targets"/>
<Import Project="..\LLib\RenameZip.targets"/>
</Project>

View File

@ -1,6 +1,7 @@
{
"Name": "GatheringPathRenderer",
"Author": "Liza Carvelli",
"Punchline": "dev only plugin: Renders gathering location.",
"Description": "dev only plugin: Renders gathering location (without ECommons polluting the entire normal project)."
"Punchline": "[Questionable dev plugin]: Renders gathering location.",
"Description": "[Questionable dev plugin]: Renders gathering location using Splatoon.",
"RepoUrl": "https://git.carvel.li/liza/Questionable/src/branch/master/GatheringPathRenderer"
}

View File

@ -1,6 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Linq;
using System.Text.Encodings.Web;
@ -17,11 +18,11 @@ using ECommons.Schedulers;
using ECommons.SplatoonAPI;
using GatheringPathRenderer.Windows;
using LLib.GameData;
using Questionable.Model;
using Questionable.Model.Gathering;
namespace GatheringPathRenderer;
[SuppressMessage("ReSharper", "ClassNeverInstantiated.Global")]
public sealed class RendererPlugin : IDalamudPlugin
{
private const long OnTerritoryChange = -2;
@ -56,8 +57,10 @@ public sealed class RendererPlugin : IDalamudPlugin
_editorCommands = new EditorCommands(this, dataManager, commandManager, targetManager, clientState, chatGui,
configuration);
_editorWindow = new EditorWindow(this, _editorCommands, dataManager, targetManager, clientState, objectTable)
var configWindow = new ConfigWindow(pluginInterface, configuration);
_editorWindow = new EditorWindow(this, _editorCommands, dataManager, targetManager, clientState, objectTable, configWindow)
{ IsOpen = true };
_windowSystem.AddWindow(configWindow);
_windowSystem.AddWindow(_editorWindow);
_currentClassJob = (EClassJob?)_clientState.LocalPlayer?.ClassJob.RowId ?? EClassJob.Adventurer;
@ -78,6 +81,7 @@ public sealed class RendererPlugin : IDalamudPlugin
{
get
{
#if DEBUG
DirectoryInfo? solutionDirectory = _pluginInterface.AssemblyLocation.Directory?.Parent?.Parent?.Parent;
if (solutionDirectory != null)
{
@ -88,6 +92,12 @@ public sealed class RendererPlugin : IDalamudPlugin
}
throw new Exception("Unable to resolve project path");
#else
var allPluginsDirectory = _pluginInterface.ConfigFile.Directory ?? throw new Exception("Unknown directory for plugin configs");
return allPluginsDirectory
.CreateSubdirectory("Questionable")
.CreateSubdirectory("GatheringPaths");
#endif
}
}
@ -103,12 +113,18 @@ public sealed class RendererPlugin : IDalamudPlugin
try
{
#if DEBUG
foreach (var expansionFolder in ExpansionData.ExpansionFolders.Values)
LoadFromDirectory(
new DirectoryInfo(Path.Combine(PathsDirectory.FullName, expansionFolder)));
_pluginLog.Information(
$"Loaded {_gatheringLocations.Count} gathering root locations from project directory");
#else
LoadFromDirectory(PathsDirectory);
_pluginLog.Information(
$"Loaded {_gatheringLocations.Count} gathering root locations from {PathsDirectory.FullName} directory");
#endif
}
catch (Exception e)
{

View File

@ -0,0 +1,33 @@
using Dalamud.Interface.Windowing;
using Dalamud.Plugin;
using ImGuiNET;
namespace GatheringPathRenderer.Windows;
internal sealed class ConfigWindow : Window
{
private readonly IDalamudPluginInterface _pluginInterface;
private readonly Configuration _configuration;
public ConfigWindow(IDalamudPluginInterface pluginInterface, Configuration configuration)
: base("Gathering Path Config", ImGuiWindowFlags.AlwaysAutoResize)
{
_pluginInterface = pluginInterface;
_configuration = configuration;
AllowPinning = false;
AllowClickthrough = false;
}
public override void Draw()
{
string authorName = _configuration.AuthorName;
if (ImGui.InputText("Author name for new files", ref authorName, 256))
{
_configuration.AuthorName = authorName;
Save();
}
}
private void Save() => _pluginInterface.SavePluginConfig(_configuration);
}

View File

@ -6,6 +6,7 @@ using System.Numerics;
using Dalamud.Game.ClientState.Objects;
using Dalamud.Game.ClientState.Objects.Enums;
using Dalamud.Game.ClientState.Objects.Types;
using Dalamud.Interface;
using Dalamud.Interface.Colors;
using Dalamud.Interface.Windowing;
using Dalamud.Plugin.Services;
@ -32,8 +33,8 @@ internal sealed class EditorWindow : Window
_targetLocation;
public EditorWindow(RendererPlugin plugin, EditorCommands editorCommands, IDataManager dataManager,
ITargetManager targetManager, IClientState clientState, IObjectTable objectTable)
: base("Gathering Path Editor###QuestionableGatheringPathEditor",
ITargetManager targetManager, IClientState clientState, IObjectTable objectTable, ConfigWindow configWindow)
: base($"Gathering Path Editor {typeof(EditorWindow).Assembly.GetName().Version!.ToString(2)}###QuestionableGatheringPathEditor",
ImGuiWindowFlags.NoFocusOnAppearing | ImGuiWindowFlags.NoNavFocus | ImGuiWindowFlags.AlwaysAutoResize)
{
_plugin = plugin;
@ -48,6 +49,20 @@ internal sealed class EditorWindow : Window
MinimumSize = new Vector2(300, 100),
};
TitleBarButtons.Add(new TitleBarButton
{
Icon = FontAwesomeIcon.Cog,
IconOffset = new Vector2(1.5f, 1),
Click = _ => configWindow.IsOpen = true,
Priority = int.MinValue,
ShowTooltip = () =>
{
ImGui.BeginTooltip();
ImGui.Text("Open Configuration");
ImGui.EndTooltip();
}
});
RespectCloseHotkey = false;
ShowCloseButton = false;
AllowPinning = false;

View File

@ -0,0 +1,138 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 1190,
"InteractionType": "None"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34920,
"Locations": [
{
"Position": {
"X": 192.6021,
"Y": 12.31054,
"Z": 631.2545
}
},
{
"Position": {
"X": 194.8373,
"Y": 12.50387,
"Z": 646.5401
}
},
{
"Position": {
"X": 180.8447,
"Y": 12.43262,
"Z": 610.7131
}
}
]
},
{
"DataId": 34919,
"Locations": [
{
"Position": {
"X": 186.171,
"Y": 12.54104,
"Z": 634.9042
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34917,
"Locations": [
{
"Position": {
"X": 39.45634,
"Y": -0.06042051,
"Z": 502.3853
}
}
]
},
{
"DataId": 34918,
"Locations": [
{
"Position": {
"X": 46.03248,
"Y": -0.7049216,
"Z": 491.6059
}
},
{
"Position": {
"X": 36.15481,
"Y": -0.0501074,
"Z": 505.9388
}
},
{
"Position": {
"X": 24.72226,
"Y": 0.5922582,
"Z": 528.0809
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34922,
"Locations": [
{
"Position": {
"X": 2.302937,
"Y": -4.586716,
"Z": 687.4797
}
},
{
"Position": {
"X": 30.02284,
"Y": -2.447479,
"Z": 704.4326
}
},
{
"Position": {
"X": 41.59287,
"Y": -0.8454803,
"Z": 692.0099
}
}
]
},
{
"DataId": 34921,
"Locations": [
{
"Position": {
"X": 18.47237,
"Y": -2.987581,
"Z": 690.8011
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,72 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"Position": {
"X": 193.6185,
"Y": 1.9123514,
"Z": 713.436
},
"TerritoryId": 957,
"InteractionType": "WalkTo"
},
{
"DataId": 1037622,
"Position": {
"X": 189.94562,
"Y": 0.8560083,
"Z": 702.7896
},
"StopDistance": 0.25,
"TerritoryId": 957,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 2011979,
"Position": {
"X": 236.1333,
"Y": 10.666016,
"Z": 613.27527
},
"TerritoryId": 957,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": 193.6185,
"Y": 1.9123514,
"Z": 713.436
},
"TerritoryId": 957,
"InteractionType": "WalkTo",
"Fly": true
},
{
"DataId": 1037622,
"Position": {
"X": 189.94562,
"Y": 0.8560083,
"Z": 702.7896
},
"StopDistance": 0.25,
"TerritoryId": 957,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,59 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1037625,
"Position": {
"X": 176.47058,
"Y": 1.8742183,
"Z": 799.2217
},
"StopDistance": 1,
"TerritoryId": 957,
"InteractionType": "AcceptQuest",
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": 13.657948,
"Y": 1.6567476,
"Z": 631.81714
},
"TerritoryId": 957,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"KillEnemyDataIds": [
13527
],
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1037625,
"Position": {
"X": 176.47058,
"Y": 1.8742183,
"Z": 799.2217
},
"StopDistance": 1,
"TerritoryId": 957,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,74 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1037682,
"Position": {
"X": -564.1108,
"Y": 11.802608,
"Z": 124.28467
},
"TerritoryId": 957,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1039378,
"Position": {
"X": -103.25781,
"Y": 2.5712337,
"Z": 597.589
},
"TerritoryId": 957,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [
14119,
14120
],
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2011933,
"Position": {
"X": -102.61694,
"Y": 3.0059814,
"Z": 598.9319
},
"TerritoryId": 957,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1037682,
"Position": {
"X": -564.1108,
"Y": 11.802608,
"Z": 124.28467
},
"TerritoryId": 957,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Thavnair - Great Work",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,65 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1037671,
"Position": {
"X": -554.37555,
"Y": 1.120665,
"Z": 22.690125
},
"StopDistance": 0.5,
"TerritoryId": 957,
"InteractionType": "AcceptQuest",
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1039384,
"Position": {
"X": 223.22424,
"Y": 10.211119,
"Z": 562.4321
},
"TerritoryId": 957,
"InteractionType": "Interact",
"AetheryteShortcut": "Thavnair - Yedlihmad",
"Fly": true,
"DialogueChoices": [
{
"Type": "List",
"Prompt": "TEXT_AKTKZA021_04200_Q1_000_000",
"Answer": "TEXT_AKTKZA021_04200_A1_000_002"
}
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1037671,
"Position": {
"X": -554.37555,
"Y": 1.120665,
"Z": 22.690125
},
"StopDistance": 0.5,
"TerritoryId": 957,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Thavnair - Great Work",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,104 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1039516,
"Position": {
"X": -554.89435,
"Y": 11.402609,
"Z": 125.10864
},
"TerritoryId": 957,
"InteractionType": "AcceptQuest",
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1037680,
"Position": {
"X": -550.1946,
"Y": 1.6023201,
"Z": 50.766724
},
"StopDistance": 1,
"TerritoryId": 957,
"InteractionType": "Emote",
"Emote": "greeting",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"DataId": 1037670,
"Position": {
"X": -508.84262,
"Y": -3.7109916E-05,
"Z": -20.767578
},
"TerritoryId": 957,
"InteractionType": "Emote",
"Emote": "greeting",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 1037676,
"Position": {
"X": -502.95264,
"Y": 12.375282,
"Z": 116.31946
},
"TerritoryId": 957,
"InteractionType": "Emote",
"Emote": "greeting",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1039516,
"Position": {
"X": -554.89435,
"Y": 11.402609,
"Z": 125.10864
},
"TerritoryId": 957,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,110 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1039379,
"Position": {
"X": -478.3246,
"Y": 39.636753,
"Z": 95.47571
},
"TerritoryId": 957,
"InteractionType": "AcceptQuest",
"Fly": true,
"DialogueChoices": [
{
"Type": "List",
"Prompt": "TEXT_AKTKZA023_04202_Q1_000_000",
"Answer": "TEXT_AKTKZA023_04202_A1_000_001"
}
]
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1039380,
"Position": {
"X": -386.862,
"Y": 21.832859,
"Z": 206.77502
},
"TerritoryId": 957,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1039380,
"Position": {
"X": -386.862,
"Y": 21.832859,
"Z": 206.77502
},
"TerritoryId": 957,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 2011911,
"Position": {
"X": -387.28925,
"Y": 21.744019,
"Z": 208.88062
},
"TerritoryId": 957,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [
14118
]
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1039380,
"Position": {
"X": -386.862,
"Y": 21.832859,
"Z": 206.77502
},
"TerritoryId": 957,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1039379,
"Position": {
"X": -478.3246,
"Y": 39.636753,
"Z": 95.47571
},
"TerritoryId": 957,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,149 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1039365,
"Position": {
"X": -490.37924,
"Y": 5.667216,
"Z": 63.553833
},
"TerritoryId": 957,
"InteractionType": "AcceptQuest",
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1039366,
"Position": {
"X": -385.24457,
"Y": 15.095761,
"Z": 62.974
},
"TerritoryId": 957,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1039367,
"Position": {
"X": -161.85254,
"Y": 32.732735,
"Z": 210.74231
},
"TerritoryId": 957,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 2011903,
"Position": {
"X": -161.5473,
"Y": 32.211792,
"Z": 225.36047
},
"TerritoryId": 957,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 2011904,
"Position": {
"X": -148.57715,
"Y": 34.10388,
"Z": 207.84314
},
"TerritoryId": 957,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"DataId": 2011902,
"Position": {
"X": -170.21442,
"Y": 31.814941,
"Z": 193.1029
},
"TerritoryId": 957,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [
14117
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1039367,
"Position": {
"X": -161.85254,
"Y": 32.732735,
"Z": 210.74231
},
"TerritoryId": 957,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1039365,
"Position": {
"X": -490.37924,
"Y": 5.667216,
"Z": 63.553833
},
"TerritoryId": 957,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Thavnair - Great Work",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,185 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1039371,
"Position": {
"X": -409.93365,
"Y": 10.751212,
"Z": 33.035767
},
"TerritoryId": 957,
"InteractionType": "AcceptQuest",
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1039372,
"Position": {
"X": 195.91052,
"Y": 4.763736,
"Z": 658.2893
},
"TerritoryId": 957,
"InteractionType": "Interact",
"AetheryteShortcut": "Thavnair - Yedlihmad"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1039373,
"Position": {
"X": -314.6258,
"Y": 0.70631444,
"Z": 561.12
},
"TerritoryId": 957,
"InteractionType": "Interact",
"Fly": true,
"DialogueChoices": [
{
"Type": "List",
"Prompt": "TEXT_AKTKZA026_04205_Q1_000_000",
"Answer": "TEXT_AKTKZA026_04205_A1_000_001"
}
]
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 2011905,
"Position": {
"X": -443.04572,
"Y": -0.22894287,
"Z": 800.7781
},
"TerritoryId": 957,
"InteractionType": "Interact",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 2011906,
"Position": {
"X": -458.42682,
"Y": -0.19836426,
"Z": 830.8689
},
"TerritoryId": 957,
"InteractionType": "Interact",
"Mount": false,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"Position": {
"X": -458.42682,
"Y": -0.19836426,
"Z": 830.8689
},
"StopDistance": 5,
"TerritoryId": 957,
"InteractionType": "Dive"
},
{
"DataId": 2011908,
"Position": {
"X": -484.85547,
"Y": -72.22095,
"Z": 814.35876
},
"TerritoryId": 957,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
},
{
"DataId": 2011907,
"Position": {
"X": -452.90308,
"Y": -67.00244,
"Z": 776.2417
},
"TerritoryId": 957,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"DataId": 2011909,
"Position": {
"X": -513.51184,
"Y": -52.689453,
"Z": 773.73914
},
"TerritoryId": 957,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
8
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1039371,
"Position": {
"X": -409.93365,
"Y": 10.751212,
"Z": 33.035767
},
"TerritoryId": 957,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Thavnair - Great Work",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,74 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1037685,
"Position": {
"X": -468.864,
"Y": 6.2912574,
"Z": 3.463745
},
"TerritoryId": 957,
"InteractionType": "AcceptQuest",
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": -568.1513,
"Y": 40.91181,
"Z": -451.32486
},
"StopDistance": 0.5,
"TerritoryId": 957,
"InteractionType": "Combat",
"EnemySpawnType": "AutoOnEnterArea",
"KillEnemyDataIds": [
14116
],
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1039383,
"Position": {
"X": -567.6509,
"Y": 41.313267,
"Z": -448.41687
},
"TerritoryId": 957,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1037685,
"Position": {
"X": -468.864,
"Y": 6.2912574,
"Z": 3.463745
},
"TerritoryId": 957,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Thavnair - Great Work",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,246 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1039385,
"Position": {
"X": -480.12518,
"Y": 5.362214,
"Z": 37.582886
},
"StopDistance": 0.5,
"TerritoryId": 957,
"InteractionType": "AcceptQuest",
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1039386,
"Position": {
"X": -431.7846,
"Y": 72.61802,
"Z": -555.3826
},
"TerritoryId": 957,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Position": {
"X": -477.78827,
"Y": 73.67918,
"Z": -542.7145
},
"TerritoryId": 957,
"InteractionType": "WalkTo",
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 2011962,
"Position": {
"X": -477.16492,
"Y": 74.75391,
"Z": -544.5792
},
"TerritoryId": 957,
"InteractionType": "UseItem",
"ItemId": 2003199,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 2011963,
"Position": {
"X": -479.2401,
"Y": 74.784424,
"Z": -541.619
},
"TerritoryId": 957,
"InteractionType": "UseItem",
"ItemId": 2003199,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
],
"DelaySecondsAtStart": 3
},
{
"Position": {
"X": -482.98328,
"Y": 73.32367,
"Z": -521.75024
},
"TerritoryId": 957,
"InteractionType": "WalkTo",
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
}
}
},
{
"DataId": 2011964,
"Position": {
"X": -484.67236,
"Y": 74.021484,
"Z": -523.15564
},
"TerritoryId": 957,
"InteractionType": "UseItem",
"ItemId": 2003199,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"DataId": 2011965,
"Position": {
"X": -483.6042,
"Y": 74.35718,
"Z": -519.7986
},
"TerritoryId": 957,
"InteractionType": "UseItem",
"ItemId": 2003199,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
],
"DelaySecondsAtStart": 3
},
{
"Position": {
"X": -475.0877,
"Y": 73.24273,
"Z": -512.62787
},
"TerritoryId": 957,
"InteractionType": "WalkTo"
},
{
"DataId": 2011967,
"Position": {
"X": -476.92078,
"Y": 74.08252,
"Z": -511.43665
},
"TerritoryId": 957,
"InteractionType": "UseItem",
"ItemId": 2003199,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
4
]
},
{
"DataId": 2011966,
"Position": {
"X": -473.0144,
"Y": 74.32666,
"Z": -512.3827
},
"TerritoryId": 957,
"InteractionType": "UseItem",
"ItemId": 2003199,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
8
],
"DelaySecondsAtStart": 3
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1039386,
"Position": {
"X": -431.7846,
"Y": 72.61802,
"Z": -555.3826
},
"TerritoryId": 957,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1039385,
"Position": {
"X": -480.12518,
"Y": 5.362214,
"Z": 37.582886
},
"StopDistance": 0.5,
"TerritoryId": 957,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Thavnair - Great Work",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,98 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1037673,
"Position": {
"X": -517.0215,
"Y": 11.975277,
"Z": 100.541626
},
"TerritoryId": 957,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1039370,
"Position": {
"X": -106.21808,
"Y": 95.53504,
"Z": -700.4959
},
"TerritoryId": 957,
"InteractionType": "Interact",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"DataId": 1039368,
"Position": {
"X": -65.07977,
"Y": 89.860886,
"Z": -659.8764
},
"TerritoryId": 957,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 1039369,
"Position": {
"X": -66.14789,
"Y": 89.4264,
"Z": -635.8892
},
"TerritoryId": 957,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1037673,
"Position": {
"X": -517.0215,
"Y": 11.975277,
"Z": 100.541626
},
"TerritoryId": 957,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Thavnair - Great Work",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,64 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1037681,
"Position": {
"X": -554.74176,
"Y": 11.402611,
"Z": 137.31592
},
"TerritoryId": 957,
"InteractionType": "AcceptQuest",
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": -281.16296,
"Y": 94.31451,
"Z": -289.12802
},
"TerritoryId": 957,
"InteractionType": "WalkTo",
"Fly": true
},
{
"DataId": 2011910,
"Position": {
"X": -280.99493,
"Y": 95.87244,
"Z": -287.64783
},
"TerritoryId": 957,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1037681,
"Position": {
"X": -554.74176,
"Y": 11.402611,
"Z": 137.31592
},
"TerritoryId": 957,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Thavnair - Great Work",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,76 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1048605,
"Position": {
"X": -358.38867,
"Y": 19.728025,
"Z": -105.02789
},
"TerritoryId": 1190,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "Shaaloani - Sheshenewezi Springs",
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 2014456,
"Position": {
"X": -128.64886,
"Y": 16.311829,
"Z": -290.69965
},
"TerritoryId": 1190,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1048608,
"Position": {
"X": -126.57361,
"Y": 15.67948,
"Z": -369.46674
},
"TerritoryId": 1190,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1048605,
"Position": {
"X": -358.38867,
"Y": 19.728025,
"Z": -105.02789
},
"TerritoryId": 1190,
"InteractionType": "CompleteQuest",
"Fly": true,
"NextQuestId": 5241
}
]
}
]
}

View File

@ -0,0 +1,65 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"Position": {
"X": -363.2864,
"Y": 20.16234,
"Z": -90.06508
},
"TerritoryId": 1190,
"InteractionType": "WalkTo"
},
{
"DataId": 1051495,
"Position": {
"X": -365.28577,
"Y": 20.14268,
"Z": -88.51758
},
"TerritoryId": 1190,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": -354.53677,
"Y": 19.32763,
"Z": -99.326805
},
"TerritoryId": 1190,
"InteractionType": "WalkTo",
"Mount": true
},
{
"Position": {
"X": -91.25145,
"Y": 17.80576,
"Z": -267.2748
},
"TerritoryId": 1190,
"InteractionType": "WalkTo",
"Fly": true
},
{
"DataId": 1051497,
"Position": {
"X": -91.5694,
"Y": 17.7503,
"Z": -268.54352
},
"TerritoryId": 1190,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -859,7 +859,8 @@
"joy",
"mogdance",
"salute",
"laugh"
"laugh",
"greeting"
]
}
}

View File

@ -43,6 +43,7 @@ public sealed class EmoteConverter() : EnumConverter<EEmote>(Values)
{ EEmote.Flex, "flex" },
{ EEmote.Respect, "respect" },
{ EEmote.Box, "box" },
{ EEmote.Uchiwasshoi, "uchiwasshoi" }
{ EEmote.Greeting, "greeting" },
{ EEmote.Uchiwasshoi, "uchiwasshoi" },
};
}

View File

@ -44,6 +44,7 @@ public enum EEmote
Flex = 139,
Respect = 140,
Box = 166,
Greeting = 172,
Uchiwasshoi = 278
}

View File

@ -40,6 +40,12 @@ internal sealed class QuestData
public QuestData(IDataManager dataManager)
{
JournalGenreOverrides journalGenreOverrides = new()
{
RadzAtHanSideQuests = dataManager.GetExcelSheet<Quest>().GetRow(69805).JournalGenre.RowId,
ThavnairSideQuests = dataManager.GetExcelSheet<Quest>().GetRow(70025).JournalGenre.RowId,
};
Dictionary<uint, uint> questChapters =
dataManager.GetExcelSheet<QuestChapter>()
.Where(x => x.RowId > 0 && x.Quest.RowId > 0)
@ -59,7 +65,7 @@ internal sealed class QuestData
.Where(x => x.RowId > 0)
.Where(x => x.IssuerLocation.RowId > 0)
.Select(x => new QuestInfo(x, questChapters.GetValueOrDefault(x.RowId),
startingCities.GetValueOrDefault(x.RowId))),
startingCities.GetValueOrDefault(x.RowId), journalGenreOverrides)),
..dataManager.GetExcelSheet<SatisfactionNpc>()
.Where(x => x is { RowId: > 0, Npc.RowId: > 0 })
.Select(x => new SatisfactionSupplyInfo(x)),

View File

@ -0,0 +1,7 @@
namespace Questionable.Model;
internal sealed class JournalGenreOverrides
{
public required uint ThavnairSideQuests { get; init; }
public required uint RadzAtHanSideQuests { get; init; }
}

View File

@ -12,7 +12,7 @@ namespace Questionable.Model;
internal sealed class QuestInfo : IQuestInfo
{
public QuestInfo(ExcelQuest quest, uint newGamePlusChapter, byte startingCity)
public QuestInfo(ExcelQuest quest, uint newGamePlusChapter, byte startingCity, JournalGenreOverrides journalGenreOverrides)
{
QuestId = new QuestId((ushort)(quest.RowId & 0xFFFF));
@ -53,10 +53,14 @@ internal sealed class QuestInfo : IQuestInfo
.Where(x => x.Value != 0)
.ToImmutableList();
QuestLockJoin = (EQuestJoin)quest.QuestLockJoin;
JournalGenre = quest.JournalGenre.ValueNullable?.RowId;
JournalGenre = QuestId.Value switch
{
>= 4196 and <= 4209 => journalGenreOverrides.ThavnairSideQuests,
4173 => journalGenreOverrides.RadzAtHanSideQuests,
_ => quest.JournalGenre.ValueNullable?.RowId,
};
SortKey = quest.SortKey;
IsMainScenarioQuest = quest.JournalGenre.ValueNullable?.JournalCategory.ValueNullable?.JournalSection
.ValueNullable?.RowId is 0 or 1;
IsMainScenarioQuest = quest.JournalGenre.ValueNullable?.Icon == 61412;
CompletesInstantly = quest.TodoParams[0].ToDoCompleteSeq == 0;
PreviousInstanceContent = quest.InstanceContent.Select(x => (ushort)x.RowId).Where(x => x != 0).ToList();
PreviousInstanceContentJoin = (EQuestJoin)quest.InstanceContentJoin;