KamiToolKit --- Text
1 Subproject commit 26a0abbc8795a3b4b903623022ae8ba6725b59a5 1 Subproject commit d9402bf2511c9f36b0f864f01def3f05152df144
KamiToolKit.Components --- Text
1 Subproject commit a13fa93095875ccd88dfa6133e23658d5221a57b 1 Subproject commit 43d15a7bebdb7b4a00fc3acd3d0669a21e3f0004
VanillaPlus.sln.DotSettings --- Text
13 13 <s:Boolean x:Key="/Default/UserDictionary/Words/=guildhests/@EntryIndexedValue">True</s:Boolean>
14 14 <s:Boolean x:Key="/Default/UserDictionary/Words/=hasel/@EntryIndexedValue">True</s:Boolean>
15 15 <s:Boolean x:Key="/Default/UserDictionary/Words/=listinventory/@EntryIndexedValue">True</s:Boolean>
.. 16 <s:Boolean x:Key="/Default/UserDictionary/Words/=loadingimage/@EntryIndexedValue">True</s:Boolean>
16 17 <s:Boolean x:Key="/Default/UserDictionary/Words/=macroicon/@EntryIndexedValue">True</s:Boolean>
17 18 <s:Boolean x:Key="/Default/UserDictionary/Words/=micon/@EntryIndexedValue">True</s:Boolean>
18 19 <s:Boolean x:Key="/Default/UserDictionary/Words/=ninegrid/@EntryIndexedValue">True</s:Boolean>
VanillaPlus/DevFeatures/DebugCustomAddon/DebugAddon.cs --- 1/2 --- C#
. 1 // ReSharper disable RedundantOverriddenMember
. 2
1 3 using System;
2 4 using FFXIVClientStructs.FFXIV.Component.GUI;
VanillaPlus/DevFeatures/DebugCustomAddon/DebugAddon.cs --- 2/2 --- C#
11 13 public class DebugAddon : NativeAddon {
12 14
13 15 protected override unsafe void OnSetup(AtkUnitBase* addon, Span<AtkValue> atkValueSpan) {
.. 16 base.OnSetup(addon, atkValueSpan);
14 17
15 18 }
.. 19
.. 20 protected override unsafe void OnFinalize(AtkUnitBase* addon) {
.. 21 base.OnFinalize(addon);
.. 22
.. 23
.. 24 }
16 25 }
17 26 #endif
VanillaPlus/Extensions/ClassJobCategoryExtensions.cs --- Text (4 C# parse errors, exceeded DFT_PARSE_ERROR_LIMIT)
7 7 extension(ClassJobCategory row) {
8 8 public Lumina.Excel.Collection<bool> ClassesJobs
9 9 => new(row.ExcelPage, parentOffset: row.RowOffset, offset: row.RowOffset, &ClassJobCtor, size: row.ExcelPage.Module.GetSheet<ClassJob>().Count);
. 10
. 11 /// <summary>
. 12 /// Returns true when the provided job is supported by this ClassJob.
. 13 /// </summary>
. 14 public bool IncludesJob(ClassJob job)
. 15 => row.ClassesJobs[(int) job.RowId];
. 16
. 17 /// <summary>
. 18 /// Returns true when the provided job row id is supported by this ClassJob.
. 19 /// </summary>
. 20 public bool IncludesJob(uint classJobId)
. 21 => row.ClassesJobs[(int) classJobId];
10 22 }
11 23
12 24 private static bool ClassJobCtor(ExcelPage page, uint parentOffset, uint offset, uint i)
VanillaPlus/Extensions/TerritoryTypeExtensions.cs --- Text (1 C# parse error, exceeded DFT_PARSE_ERROR_LIMIT)
1 using Lumina.Excel;
2 using Lumina.Excel.Sheets;
3 using Lumina.Text.ReadOnly;
4
5 namespace VanillaPlus.Extensions;
6
7 public static class TerritoryTypeExtensions {
8 extension(TerritoryType territoryType) {
9 public string LoadingImagePath {
10 get {
11 if (!Services.DataManager.GetExcelSheet<LoadingImage>().TryGetRow(territoryType.LoadingImage.RowId, out var loadingImage)) return string.Empty;
12
13 var imageName = loadingImage.Name.ExtractText();
14 if (string.IsNullOrEmpty(imageName)) return string.Empty;
15
16 return $"ui/loadingimage/{imageName}_hr1.tex";
17 }
18 }
19 }
20 }
21
22 /// <summary>
23 /// Minimal definition of the game's "LoadingImage" Excel sheet, which Lumina does not generate.
24 /// Exposes the single texture-name column referenced by <c>TerritoryType.LoadingImage</c>.
25 /// </summary>
26 [Sheet("LoadingImage")]
27 public readonly struct LoadingImage(ExcelPage page, uint offset, uint row) : IExcelRow<LoadingImage> {
28 public uint RowId => row;
29 public uint RowOffset => offset;
30 public ExcelPage ExcelPage => page;
31
32 public ReadOnlySeString Name => page.ReadString(offset, offset);
33
34 static LoadingImage IExcelRow<LoadingImage>.Create(ExcelPage page, uint offset, uint row)
35 => new(page, offset, row);
36 }
37
38
VanillaPlus/Features/ActionHighlight/ActionHighlight.cs --- 1/4 --- Text (5 C# parse errors, exceeded DFT_PARSE_ERROR_LIMIT)
25 25 Type = ModificationType.UserInterface,
26 26 Authors = ["attickdoor", "Zeffuro"],
27 27 CompatibilityModule = new PluginCompatibilityModule("AbilityAnts"),
28 .. DisabledReason = "Currently unavailable.\n\nTemporarily disabled, Will return shortly. Sorry for the trouble.",
29 28 };
30 29
31 30 public override string ImageName => "ActionHighlight.png";
VanillaPlus/Features/ActionHighlight/ActionHighlight.cs --- 2/4 --- Text (5 C# parse errors, exceeded DFT_PARSE_ERROR_LIMIT)
55 Size = new Vector2(700.0f, 650.0f), 54 Size = new Vector2(700.0f, 650.0f),
56 InternalName = "ActionHighlightConfig", 55 InternalName = "ActionHighlightConfig",
57 Title = Strings.ActionHighlight_Configuration, 56 Title = Strings.ActionHighlight_Configuration,
58 OptionsList = Config.ClassJobConfigs, 57 OptionsList = [],
59 SaveConfig = () => Task.Run(Config.Save), 58 SaveConfig = () => Task.Run(Config.Save),
60 GetEntrySearchString = entry => Services.DataManager.GetExcelSheet<ClassJob>().GetRow(entry.ClassJobId) 59 GetEntrySearchString = entry => Services.DataManager.GetExcelSheet<ClassJob>().GetRow(entry.ClassJobId)
.. .Name.ToString(), .. .Name.ToString(),
61 AddClicked = OnAddClicked, 60 AddClicked = OnAddClicked,
62 RemoveClicked = OnRemoveClicked, 61 RemoveClicked = OnRemoveClicked,
63 }; 62 };
64 63
.. 64 UpdateOptionsList();
.. 65
65 OpenConfigAction = configAddon.Toggle; 66 OpenConfigAction = configAddon.Toggle;
66 67
67 unsafe { 68 unsafe {
VanillaPlus/Features/ActionHighlight/ActionHighlight.cs --- 3/4 --- Text (5 C# parse errors, exceeded DFT_PARSE_ERROR_LIMIT)
98 } 99 }
99 100
100 Task.Run(Config.Save); 101 Task.Run(Config.Save);
101 configAddon?.OptionsList = Config.ClassJobConfigs; 102 UpdateOptionsList();
102 }; 103 };
103 104
104 classJobSearchAddon?.Open(); 105 classJobSearchAddon?.Open();
VanillaPlus/Features/ActionHighlight/ActionHighlight.cs --- 4/4 --- Text (5 C# parse errors, exceeded DFT_PARSE_ERROR_LIMIT)
168 } 169 }
169 } 170 }
170 171
171 public static List<Action> GetClassActions() { 172 private void UpdateOptionsList() {
172 List<uint> additionalActions = [7444, 7445, 37018, 37023, 37024, 37025, 37026, 37027, 37028]; 173 if (configAddon is null) return;
... 174 if (Config is null) return;
173 175
174 // I have no idea what Unknown6 is, but it's been in there since the very first AbilityAnts release. 176 Task.Run(() => {
... 177 var results = Config.ClassJobConfigs
... 178 .Where(entry => entry.ClassJobId is not 0)
... 179 .OrderBy(entry => Services.SeStringEvaluator.EvaluateFromAddon(981, [entry.ClassJobId]).ToString())
... 180 .ToList();
... 181
175 // My best guess at the moment is that it removes abilities that have been replaced or upgraded. 182 Services.Framework.Run(() => {
... 183 configAddon.OptionsList = results;
... 184 });
... 185 });
... 186 }
... 187
... 188 /// <summary>
... 189 /// Gets all valid actions for the specified ClassJob.
... 190 /// </summary>
... 191 public static List<Action> GetClassActions(ClassJob classJob)
176 return Services.DataManager.GetExcelSheet<Action>() 192 => Services.DataManager.GetExcelSheet<Action>()
177 .Where(action => IsValidAction(action) || additionalActions.Contains(action.RowId)) 193 .Where(action => IsValidAction(action, classJob))
... 194 .DistinctBy(action => action.RowId)
178 .ToList(); 195 .ToList();
... 196
179 } 197 /// <summary>
... 198 /// Returns true for actions that belong to the specified ClassJob <b>or its parent class</b>.
... 199 /// </summary>
... 200 private static bool IsPlayerClassAction(Action action, ClassJob classJob)
... 201 => action.IsPlayerAction && action.ClassJobCategory.Value.IncludesJob(classJob);
... 202
... 203 /// <summary>
... 204 /// Returns true for actions that can be used, but only as flip actions from other skills, such as dancer steps
... ... .
... 205 /// </summary>
... 206 private static bool IsUnassignableClassAction(Action action, ClassJob classJob)
... 207 => action is { IsPlayerAction: false, ClassJob.RowId: 0, ClassJobLevel: not 0 }
... 208 && action.IsUsableByJob(classJob);
... 209
... 210 /// <summary>
... 211 /// Returns true for actions that we want to allow ActionHighlight to highlight.
... 212 /// </summary>
... 213 internal static bool IsValidAction(Action action, ClassJob classJob)
... 214 => action is { IsPvP: false, IsRoleAction: false, RowId: not (2272u or 29581u or 1584u) } // Rabbit Medium
... ... and 六道輪廻 (should be a PVP action) and Purify
... 215 && (action.ActionCategory.RowId == 4 || action.Recast100ms > 150)
... 216 && (IsPlayerClassAction(action, classJob) || IsUnassignableClassAction(action, classJob));
180 217
181 public static bool IsValidAction(Action action) 218 /// <summary>
... 219 /// Returns true for actions that are valid for the specified ClassJob.
... 220 /// </summary>
... 221 internal static bool IsValidRoleAction(Action action, ClassJob classJob)
182 => action is { IsPvP: false, ClassJob.ValueNullable.Unknown6: > 0, IsPlayerAction: true } and ({ ActionCate 222 => action is { IsPvP: false, IsRoleAction: true }
... gory.RowId: 4 } or { Recast100ms: > 100 }); ...
... 223 && action.ClassJobCategory.Value.IncludesJob(classJob);
183 } 224 }
VanillaPlus/Features/ActionHighlight/Config/AntsConfig.cs --- 1/4 --- C#
1 1 using System;
2 2 using System.Collections.Generic;
3 3 using System.Linq;
. 4 using Lumina.Excel.Sheets;
4 5 using Newtonsoft.Json.Linq;
5 6 using VanillaPlus.Classes;
6 7 using Action = Lumina.Excel.Sheets.Action;
VanillaPlus/Features/ActionHighlight/Config/AntsConfig.cs --- 2/4 --- C#
30 31 var actionSettingsObj = jObject["ActionSettings"]?.ToObject<JObject>();
31 32 if (actionSettingsObj is null) return false;
.. 33
.. 34 var classJobs = Services.DataManager.GetExcelSheet<ClassJob>()
.. 35 .Where(job => job is { RowId: not 0, Name.IsEmpty: false, IsCrafter: false, IsGatherer: false })
.. 36 .ToList();
32 37
33 38 List<AntsClassJobConfig> newEntries = [];
34 39
VanillaPlus/Features/ActionHighlight/Config/AntsConfig.cs --- 3/4 --- C#
38 var actionSettings = property.Value.ToObject<AntsActionSetting>(); 43 var actionSettings = property.Value.ToObject<AntsActionSetting>();
39 if (actionSettings is null) continue; 44 if (actionSettings is null) continue;
40 45
41 var actionInfo = Services.DataManager.GetExcelSheet<Action>().GetRow(actionId); 46 var action = Services.DataManager.GetExcelSheet<Action>().GetRow(actionId);
42 47
43 var classJobEntry = newEntries.FirstOrDefault(entry => entry.ClassJobId == actionInfo.ClassJob.R 48 foreach (var classJob in classJobs) {
.. owId); ..
44 ..
45 if (classJobEntry is null) { 49 if (!ActionHighlight.IsValidAction(action, classJob) && !ActionHighlight.IsValidRoleAction(a
.. .. ction, classJob)) continue;
.. 50
46 newEntries.Add(new AntsClassJobConfig { 51 AddActionSetting(newEntries, classJob.RowId, actionSettings, actionId);
47 ClassJobId = actionInfo.ClassJob.RowId, 52 }
48 ActionSettings = [ ..
49 actionSettings, ..
50 ], ..
51 }); ..
52 } ..
53 else { ..
54 classJobEntry.ActionSettings.Add(actionSettings); ..
55 } ..
56 } 53 }
57 54
58 ClassJobConfigs = newEntries; 55 ClassJobConfigs = newEntries;
VanillaPlus/Features/ActionHighlight/Config/AntsConfig.cs --- 4/4 --- C#
62 59 return false;
63 60 }
.. 61
.. 62 private static void AddActionSetting(List<AntsClassJobConfig> entries, uint classJobId, AntsActionSetting source, uint actionId) {
.. 63 if (entries.FirstOrDefault(configEntry => configEntry.ClassJobId == classJobId) is not { } entry) {
.. 64 entry = new AntsClassJobConfig {
.. 65 ClassJobId = classJobId,
.. 66 ActionSettings = [],
.. 67 };
.. 68
.. 69 entries.Add(entry);
.. 70 }
.. 71
.. 72 if (entry.ActionSettings.Any(setting => setting.ActionId == actionId)) return;
.. 73
.. 74 entry.ActionSettings.Add(new AntsActionSetting {
.. 75 ActionId = actionId,
.. 76 IsEnabled = source.IsEnabled,
.. 77 ThresholdMs = source.ThresholdMs,
.. 78 });
.. 79 }
64 80 }
VanillaPlus/Features/ActionHighlight/Nodes/AntsClassJobConfigurationNode.cs --- 1/2 --- C#
1 1 using System;
2 . using System.Collections.Generic;
3 2 using System.Linq;
4 3 using System.Numerics;
5 4 using KamiToolKit.Components.ConfigurationNodes;
VanillaPlus/Features/ActionHighlight/Nodes/AntsClassJobConfigurationNode.cs --- 2/2 --- C#
35 34
36 backgroundImageNode.IconId = 62000 + entry.ClassJobId; 35 backgroundImageNode.IconId = 62000 + entry.ClassJobId;
37 ..
38 List<Action> additionalActions = []; ..
39 ..
40 // Astrologian Entries. ..
41 if (entry.ClassJobId is 33) { ..
42 foreach (var action in (List<uint>)[7444, 7445, 37018, 37023, 37024, 37025, 37026, 37027, 37028]) { ..
43 additionalActions.Add(Services.DataManager.GetExcelSheet<Action>().GetRow(action)); ..
44 } ..
45 } ..
46 36
47 actionsListNode.OptionsList = Services.DataManager.GetExcelSheet<Action>() 37 actionsListNode.OptionsList = ActionHighlight.GetClassActions(classJob);
48 .Where(a => !a.IsPvP && (a.ClassJob.RowId == classJob.RowId || a.ClassJob.RowId == classJob.ClassJobPare ..
.. nt.RowId) ..
49 && a.IsPlayerAction && (a.ActionCategory.RowId == 4 || a.Recast100ms > 100) && a.Ro ..
.. wId != 29581) ..
50 .Where(action => action is { IsRoleAction: false }) ..
51 .Concat(additionalActions) ..
52 .ToList(); ..
53 38
54 rolesListNode.OptionsList = Services.DataManager.GetExcelSheet<Action>() 39 rolesListNode.OptionsList = Services.DataManager.GetExcelSheet<Action>()
55 .Where(action => action.ClassJobCategory.Value.ClassesJobs[(int) entry.ClassJobId]) 40 .Where(action => action.ClassJobCategory.Value.ClassesJobs[(int) entry.ClassJobId])
VanillaPlus/Features/BorderlessCutscenes/BorderlessCutscenes.cs --- C#
10 DisplayName = Strings.ModificationDisplay_BorderlessCutscenes, 10 DisplayName = Strings.ModificationDisplay_BorderlessCutscenes,
11 Description = Strings.ModificationDescription_BorderlessCutscenes, 11 Description = Strings.ModificationDescription_BorderlessCutscenes,
12 Type = ModificationType.GameBehavior, 12 Type = ModificationType.GameBehavior,
13 Authors = ["goat", "Maple", "MidoriKami"], 13 Authors = ["goat", "MapleRecall", "MidoriKami"],
14 CompatibilityModule = new PluginCompatibilityModule("Dalamud.FullscreenCutscenes"), 14 CompatibilityModule = new PluginCompatibilityModule("Dalamud.FullscreenCutscenes"),
15 }; 15 };
16 16
VanillaPlus/Features/FancyLoadingScreens/FancyLoadingScreens.cs --- Text (3 C# parse errors, exceeded DFT_PARSE_ERROR_LIMIT)
1 using System;
2 using System.Numerics;
3 using System.Threading.Tasks;
4 using Dalamud.Game.Addon.Lifecycle;
5 using Dalamud.Game.Addon.Lifecycle.AddonArgTypes;
6 using Dalamud.Hooking;
7 using FFXIVClientStructs.FFXIV.Client.Game.UI;
8 using FFXIVClientStructs.FFXIV.Client.UI;
9 using FFXIVClientStructs.FFXIV.Component.GUI;
10 using KamiToolKit.Controllers;
11 using KamiToolKit.Enums;
12 using KamiToolKit.Nodes;
13 using KamiToolKit.Nodes.Simplified;
14 using KamiToolKit.Timelines;
15 using Lumina.Excel.Sheets;
16 using VanillaPlus.Classes;
17 using VanillaPlus.Enums;
18
19 namespace VanillaPlus.Features.FancyLoadingScreens;
20
21 public class FancyLoadingScreens : GameModification {
22 public override ModificationInfo ModificationInfo => new() {
23 DisplayName = Strings.ModificationDisplay_FancyLoadingScreens,
24 Description = Strings.ModificationDescription_FancyLoadingScreens,
25 Type = ModificationType.UserInterface,
26 Authors = ["goat", "MapleRecall", "MidoriKami"],
27 CompatibilityModule = new PluginCompatibilityModule("Dalamud.LoadingImage"),
28 };
29
30 private Hook<Telepo.Delegates.Teleport>? teleportHook;
31
32 private AddonController? locationTitleController;
33 private TimelineNode<SimpleImageNode>? artworkImageNode;
34 private bool isTeleporting;
35
36 public override async Task OnEnableAsync() {
37 unsafe {
38 teleportHook = Services.Hooker.HookFromAddress<Telepo.Delegates.Teleport>(Telepo.MemberFunctionPointers.Teleport, OnTeleport);
39 teleportHook?.Enable();
40
41 locationTitleController = new AddonController {
42 AddonName = "_LocationTitle",
43 OnSetup = OnLocationTitleSetup,
44 OnFinalize = OnLocationTitleFinalize,
45 };
46 }
47
48 await Services.Framework.Run(() => locationTitleController.Enable());
49
50 Services.AddonLifecycle.RegisterListener(AddonEvent.PostHide, "_LocationTitle", OnLoadingScreenHide);
51 Services.ClientState.TerritoryChanged += OnTerritoryChanged;
52 }
53
54 public override async Task OnDisableAsync() {
55 Services.ClientState.TerritoryChanged -= OnTerritoryChanged;
56 Services.AddonLifecycle.UnregisterListener(OnLoadingScreenHide);
57
58 teleportHook?.Dispose();
59 teleportHook = null;
60
61 await Services.Framework.Run(() => {
62 locationTitleController?.Dispose();
63 });
64 locationTitleController = null;
65
66 artworkImageNode = null;
67 }
68
69 private unsafe void OnLocationTitleSetup(AtkUnitBase* addon) {
70 artworkImageNode = new TimelineNode<SimpleImageNode> {
71 ContentNode = {
72 FitTexture = true,
73 },
74
75 LabelsetTimeline = new TimelineBuilder()
76 .BeginFrameSet(1, 480)
77 .AddLabel(1, 1, AtkTimelineJumpBehavior.Start, 0)
78 .AddLabel(480, 0, AtkTimelineJumpBehavior.PlayOnce, 0)
79 .EndFrameSet()
80 .Build(),
81
82 ContentTimeline = new TimelineBuilder()
83 .BeginFrameSet(1, 480)
84 .AddFrame(1, scale: new Vector2(1.0f, 1.0f), alpha: 0)
85 .AddFrame(60, scale: new Vector2(1.1f, 1.1f), alpha: 255)
86 .AddFrame(480, scale: new Vector2(1.4f, 1.4f), alpha: 255)
87 .EndFrameSet()
88 .Build(),
89 };
90 artworkImageNode.AttachNode(addon, NodePosition.AsFirstChild);
91 }
92
93 private unsafe void OnLocationTitleFinalize(AtkUnitBase* addon) {
94 artworkImageNode?.Dispose();
95 artworkImageNode = null;
96 }
97
98 private void OnTerritoryChanged(uint territoryId) {
99 if (!isTeleporting) {
100 SetLoadingScreenImage(territoryId);
101 }
102 }
103
104 private void SetLoadingScreenImage(uint territoryId) {
105 if (artworkImageNode is null) return;
106
107 unsafe {
108 var parentAddon = RaptureAtkUnitManager.Instance()->GetAddonByNode(artworkImageNode);
109 if (parentAddon is null) return;
110
111 var screenSize = (Vector2) AtkStage.Instance()->ScreenSize;
112 var rootScale = parentAddon->RootNode->Scale;
113
114 artworkImageNode.Position = -parentAddon->RootNode->Position / rootScale;
115 artworkImageNode.Size = screenSize / rootScale;
116 artworkImageNode.ContentNode.Origin = screenSize / rootScale / 2.0f;
117
118 if (!Services.DataManager.GetExcelSheet<TerritoryType>().TryGetRow(territoryId, out var territory)) return;
119 artworkImageNode?.ContentNode.TexturePath = territory.LoadingImagePath;
120 artworkImageNode?.Timeline?.PlayAnimation(1, true);
121 artworkImageNode?.IsVisible = true;
122 }
123 }
124
125 private void OnLoadingScreenHide(AddonEvent type, AddonArgs args) {
126 artworkImageNode?.IsVisible = false;
127 isTeleporting = false;
128 }
129
130 private unsafe bool OnTeleport(Telepo* thisPtr, uint aetheryteId, byte subIndex) {
131 var accepted = teleportHook!.Original(thisPtr, aetheryteId, subIndex);
132
133 try {
134 if (accepted && Services.DataManager.GetExcelSheet<Aetheryte>().TryGetRow(aetheryteId, out var aetheryte)) {
135 isTeleporting = true;
136 SetLoadingScreenImage(aetheryte.Territory.RowId);
137 }
138 }
139 catch (Exception exception) {
140 Services.PluginLog.Exception(exception);
141 }
142
143 return accepted;
144 }
145 }
146
VanillaPlus/Native/Addons/ModificationBrowserAddon.cs --- Text (6 C# parse errors, exceeded DFT_PARSE_ERROR_LIMIT)
125 125 }
126 126 }
127 127
... 128 protected override unsafe void OnFinalize(AtkUnitBase* addon) {
... 129 base.OnFinalize(addon);
... 130
... 131 textInputNode = null;
... 132 listNode = null;
... 133 modificationInfoNode = null;
... 134 searchRegex = null;
... 135
... 136 selectedTab = BrowserSelectedTab.All;
... 137 selectedCategory = BrowserSelectedCategory.All;
... 138 }
... 139
128 140 private void SwitchTab(BrowserSelectedTab tab) {
129 141 selectedTab = tab;
130 142 Task.Run(UpdateListNode);
VanillaPlus/Resources/Strings.Designer.cs --- C#
4711 4711 }
4712 4712 }
.... 4713
.... 4714 /// <summary>
.... 4715 /// Looks up a localized string similar to Fancy Loading Screens.
.... 4716 /// </summary>
.... 4717 internal static string ModificationDisplay_FancyLoadingScreens {
.... 4718 get {
.... 4719 return ResourceManager.GetString("ModificationDisplay_FancyLoadingScreens", resourceCulture);
.... 4720 }
.... 4721 }
.... 4722
.... 4723 /// <summary>
.... 4724 /// Looks up a localized string similar to Replaces the loading screen artwork with the destination zone's full-size loading image..
.... 4725 /// </summary>
.... 4726 internal static string ModificationDescription_FancyLoadingScreens {
.... 4727 get {
.... 4728 return ResourceManager.GetString("ModificationDescription_FancyLoadingScreens", resourceCulture);
.... 4729 }
.... 4730 }
.... 4731
.... 4732 /// <summary>
.... 4733 /// Looks up a localized string similar to Fancy Loading Screens.
.... 4734 /// </summary>
.... 4735 internal static string FancyLoadingScreens_ConfigTitle {
.... 4736 get {
.... 4737 return ResourceManager.GetString("FancyLoadingScreens_ConfigTitle", resourceCulture);
.... 4738 }
.... 4739 }
.... 4740
.... 4741 /// <summary>
.... 4742 /// Looks up a localized string similar to General.
.... 4743 /// </summary>
.... 4744 internal static string FancyLoadingScreens_CategoryGeneral {
.... 4745 get {
.... 4746 return ResourceManager.GetString("FancyLoadingScreens_CategoryGeneral", resourceCulture);
.... 4747 }
.... 4748 }
.... 4749
.... 4750 /// <summary>
.... 4751 /// Looks up a localized string similar to Show artwork on instance loads.
.... 4752 /// </summary>
.... 4753 internal static string FancyLoadingScreens_LabelInstancedLoad {
.... 4754 get {
.... 4755 return ResourceManager.GetString("FancyLoadingScreens_LabelInstancedLoad", resourceCulture);
.... 4756 }
.... 4757 }
.... 4758
.... 4759 /// <summary>
.... 4760 /// Looks up a localized string similar to Shows the destination artwork when switching instanced areas (duties, housing, etc.). Note: the artwork covers the chat box, so you cannot chat while loading.
.... 4761 /// </summary>
.... 4762 internal static string FancyLoadingScreens_LabelInstancedLoadNote {
.... 4763 get {
.... 4764 return ResourceManager.GetString("FancyLoadingScreens_LabelInstancedLoadNote", resourceCulture);
.... 4765 }
.... 4766 }
4713 4767 }
4714 4768 }
VanillaPlus/Resources/Strings.resx --- XML
1692 1692 <data name="AddonConfig_DisableKeybindInCombat" xml:space="preserve">
1693 1693 <value>Disable Keybind in Combat</value>
1694 1694 </data>
.... 1695 <data name="ModificationDisplay_FancyLoadingScreens" xml:space="preserve">
.... 1696 <value>Fancy Loading Screens</value>
.... 1697 </data>
.... 1698 <data name="ModificationDescription_FancyLoadingScreens" xml:space="preserve">
.... 1699 <value>Replaces the loading screen artwork with the destination zone's full-size loading image.</value>
.... 1700 </data>
.... 1701 <data name="FancyLoadingScreens_ConfigTitle" xml:space="preserve">
.... 1702 <value>Fancy Loading Screens</value>
.... 1703 </data>
.... 1704 <data name="FancyLoadingScreens_CategoryGeneral" xml:space="preserve">
.... 1705 <value>General</value>
.... 1706 </data>
.... 1707 <data name="FancyLoadingScreens_LabelInstancedLoad" xml:space="preserve">
.... 1708 <value>Show artwork on instance loads</value>
.... 1709 </data>
.... 1710 <data name="FancyLoadingScreens_LabelInstancedLoadNote" xml:space="preserve">
.... 1711 <value>Shows the destination artwork when switching instanced areas (duties, housing, etc.). Note: the artwork covers the chat box, so you cannot chat while loading.</value>
.... 1712 </data>
1695 1713 </root>
VanillaPlus/VanillaPlus.csproj --- XML
1 <Project Sdk="Dalamud.NET.Sdk/15.0.0"> 1 <Project Sdk="Dalamud.NET.Sdk/15.0.0">
2 <PropertyGroup> 2 <PropertyGroup>
3 <Version>1.4.1.0</Version> 3 <Version>1.4.1.1</Version>
4 </PropertyGroup> 4 </PropertyGroup>
5 5
6 <PropertyGroup> 6 <PropertyGroup>