diff --git a/.github/ISSUE_TEMPLATE/bugreport.yml b/.github/ISSUE_TEMPLATE/bugreport.yml
index 50b8b121a..e95cc86ae 100644
--- a/.github/ISSUE_TEMPLATE/bugreport.yml
+++ b/.github/ISSUE_TEMPLATE/bugreport.yml
@@ -12,9 +12,9 @@ body:
id: terms
attributes:
label: Update disclaimer
- description: If FFXIV recently updated, XIVLauncher and plugins will not work. They need to be updated first. You can get notified about updates on our Discord.
+ description: If the game recently updated, XIVLauncher and plugins will not work. They need to be updated first. You can get notified about updates on our Discord.
options:
- - label: Yes, I have checked and my issue is not related to FFXIV updating and plugins not working correctly.
+ - label: Yes, I have checked and my issue is not related to the game updating and plugins not working correctly.
required: true
- type: textarea
id: what-happened
diff --git a/.github/ISSUE_TEMPLATE/feature.yml b/.github/ISSUE_TEMPLATE/feature.yml
index 4857b111e..a3c31ca0d 100644
--- a/.github/ISSUE_TEMPLATE/feature.yml
+++ b/.github/ISSUE_TEMPLATE/feature.yml
@@ -12,9 +12,9 @@ body:
id: terms
attributes:
label: Update disclaimer
- description: If FFXIV recently updated, XIVLauncher and plugins will not work. They need to be updated first. You can get notified about updates on our Discord.
+ description: If the game recently updated, XIVLauncher and plugins will not work. They need to be updated first. You can get notified about updates on our Discord.
options:
- - label: Yes, I have checked and my request is not related to FFXIV updating and plugins not working correctly.
+ - label: Yes, I have checked and my request is not related to the game updating and plugins not working correctly.
required: true
- type: textarea
id: what-happened
diff --git a/README.md b/README.md
index 751c81b34..598298a35 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
Read in: [日本語](https://github.com/goatcorp/FFXIVQuickLauncher/wiki/Info-(Japanese)) | [Français](https://github.com/goatcorp/FFXIVQuickLauncher/wiki/Info-(French)) | [Deutsch](https://github.com/goatcorp/FFXIVQuickLauncher/wiki/Info-(German)) | [Español](https://github.com/goatcorp/FFXIVQuickLauncher/wiki/Info-(Spanish)) | [简体中文](https://github.com/goatcorp/FFXIVQuickLauncher/wiki/Info-(Chinese-Simplified)) | [繁體中文](https://github.com/goatcorp/FFXIVQuickLauncher/wiki/Info-(Chinese-Traditional)) | [한국어](https://github.com/goatcorp/FFXIVQuickLauncher/wiki/Info-(Korean)) | [Italiano](https://github.com/goatcorp/FFXIVQuickLauncher/wiki/Info-(Italian))
-XIVLauncher (abbreviated as XL) is a faster launcher for FFXIV, with various available addons and enhancements to the game!
+XIVLauncher (abbreviated as XL) is a faster launcher for our favorite critically acclaimed MMO, with various available addons and enhancements to the game!
@@ -12,7 +12,7 @@ XIVLauncher (abbreviated as XL) is a faster launcher for FFXIV, with various ava
## Why?
-The original FFXIV launcher is slow and cannot save your password. This project aims to fix that and add some QoL features to the game, such as:
+The original launcher is slow and cannot save your password. This project aims to fix that and add some QoL features to the game, such as:
* Auto-login
* Fast patching
@@ -70,6 +70,6 @@ We feel like that this offers developers the __freedom to improve the game's fun
## Disclaimer
-XIVLauncher is not in-line with Square Enix ToS. We are doing our best to make it safe to use for everyone, and to our knowledge, no one ever got into trouble for using XIVLauncher, but please be aware that it is a possibility.
You can read through our [FAQ entry](https://goatcorp.github.io/faq/xl_troubleshooting#q-are-xivlauncher-dalamud-and-dalamud-plugins-safe-to-use) on this matter if you want to know more.
+XIVLauncher is not in-line with the game's ToS. We are doing our best to make it safe to use for everyone, and to our knowledge, no one ever got into trouble for using XIVLauncher, but please be aware that it is a possibility.
You can read through our [FAQ entry](https://goatcorp.github.io/faq/xl_troubleshooting#q-are-xivlauncher-dalamud-and-dalamud-plugins-safe-to-use) on this matter if you want to know more.
##### FINAL FANTASY is a registered trademark of Square Enix Holdings Co., Ltd. FINAL FANTASY XIV © 2010-2022 SQUARE ENIX CO., LTD. All Rights Reserved. We are not affiliated with SQUARE ENIX CO., LTD. in any way.
diff --git a/misc/linux_distrib/XIVLauncher.desktop b/misc/linux_distrib/XIVLauncher.desktop
index d5502d9fd..bff92dddd 100644
--- a/misc/linux_distrib/XIVLauncher.desktop
+++ b/misc/linux_distrib/XIVLauncher.desktop
@@ -1,6 +1,6 @@
[Desktop Entry]
Name=XIVLauncher
-Comment=Custom launcher for Final Fantasy XIV Online
+Comment=Custom launcher for the most critically acclaimed MMO
Exec=xivlauncher
Icon=xivlauncher
Terminal=false
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index f542066de..e83ea79ec 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -46,6 +46,6 @@
Automated release
goatsoft
Copyright (c) goatsoft
- ffxiv
+ mmo
diff --git a/src/XIVLauncher.Common.Unix/Compatibility/GameFixes/GameFixApply.cs b/src/XIVLauncher.Common.Unix/Compatibility/GameFixes/GameFixApply.cs
index 4ccac175b..0216ff72b 100644
--- a/src/XIVLauncher.Common.Unix/Compatibility/GameFixes/GameFixApply.cs
+++ b/src/XIVLauncher.Common.Unix/Compatibility/GameFixes/GameFixApply.cs
@@ -15,7 +15,6 @@ public GameFixApply(DirectoryInfo gameDirectory, DirectoryInfo configDirectory,
{
this.fixes = new GameFix[]
{
- new DefaultConfigGameFix(gameDirectory, configDirectory, winePrefixDirectory, tempDirectory),
new MacVideoFix(gameDirectory, configDirectory, winePrefixDirectory, tempDirectory),
};
}
diff --git a/src/XIVLauncher.Common.Unix/Compatibility/GameFixes/Implementations/DefaultConfigGameFix.cs b/src/XIVLauncher.Common.Unix/Compatibility/GameFixes/Implementations/DefaultConfigGameFix.cs
deleted file mode 100644
index 3ca300683..000000000
--- a/src/XIVLauncher.Common.Unix/Compatibility/GameFixes/Implementations/DefaultConfigGameFix.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System.IO;
-
-namespace XIVLauncher.Common.Unix.Compatibility.GameFixes.Implementations;
-
-public class DefaultConfigGameFix : GameFix
-{
- public DefaultConfigGameFix(DirectoryInfo gameDirectory, DirectoryInfo configDirectory, DirectoryInfo winePrefixDirectory, DirectoryInfo tempDirectory)
- : base(gameDirectory, configDirectory, winePrefixDirectory, tempDirectory)
- {
- }
-
- public override string LoadingTitle => "Setting up default configuration...";
-
- public override void Apply()
- {
- if (!ConfigDir.Exists)
- ConfigDir.Create();
-
- var bootConf = Path.Combine(ConfigDir.FullName, "FFXIV_BOOT.cfg");
- if (!File.Exists(bootConf))
- File.WriteAllText(bootConf, "\n\n\nBrowser 1\nStartupCompleted 1");
- }
-}
\ No newline at end of file
diff --git a/src/XIVLauncher.Common.Unix/Compatibility/GameFixes/Implementations/MacVideoFix.cs b/src/XIVLauncher.Common.Unix/Compatibility/GameFixes/Implementations/MacVideoFix.cs
index 7e39a5ab3..67b37ec98 100644
--- a/src/XIVLauncher.Common.Unix/Compatibility/GameFixes/Implementations/MacVideoFix.cs
+++ b/src/XIVLauncher.Common.Unix/Compatibility/GameFixes/Implementations/MacVideoFix.cs
@@ -38,8 +38,7 @@ public override void Apply()
client.Download().GetAwaiter().GetResult();
- var zipMovieFileNames = movieFileNames.Select(movie => Path.Combine("FINAL FANTASY XIV ONLINE.app", "Contents", "SharedSupport", "finalfantasyxiv", "support",
- "published_Final_Fantasy", "drive_c", "Program Files (x86)", "SquareEnix", "FINAL FANTASY XIV - A Realm Reborn", "game", "movie", "ffxiv", movie));
+ var zipMovieFileNames = movieFileNames.Select(movie => Path.Combine("game", "movie", "ffxiv", movie));
using (ZipArchive archive = ZipFile.OpenRead(zipFilePath))
{
diff --git a/src/XIVLauncher.Common/Patching/IndexedZiPatch/IndexedZiPatchIndexRemoteInstaller.cs b/src/XIVLauncher.Common/Patching/IndexedZiPatch/IndexedZiPatchIndexRemoteInstaller.cs
index 61488fcfb..47179ccd9 100644
--- a/src/XIVLauncher.Common/Patching/IndexedZiPatch/IndexedZiPatchIndexRemoteInstaller.cs
+++ b/src/XIVLauncher.Common/Patching/IndexedZiPatch/IndexedZiPatchIndexRemoteInstaller.cs
@@ -639,7 +639,6 @@ public static void Test()
};
var maxConcurrentConnectionsForPatchSet = 1;
- // var baseDir = @"C:\Program Files (x86)\SquareEnix\FINAL FANTASY XIV - A Realm Reborn";
var baseDir = @"Z:\tgame";
var rootAndPatchPairs = new List>() {
Tuple.Create(@$"{baseDir}\boot", @"Z:\patch-dl.ffxiv.com\boot\2b5cbc63\D2021.11.16.0000.0001.patch.index"),
diff --git a/src/XIVLauncher.Common/Util/GameHelpers.cs b/src/XIVLauncher.Common/Util/GameHelpers.cs
index aa4f6cd4b..0a420ca9f 100644
--- a/src/XIVLauncher.Common/Util/GameHelpers.cs
+++ b/src/XIVLauncher.Common/Util/GameHelpers.cs
@@ -16,7 +16,7 @@ public static bool IsRegionNorthAmerica()
return RegionInfo.CurrentRegion.TwoLetterISORegionName is "US" or "MX" or "CA";
}
- public static bool IsValidFfxivPath(string path)
+ public static bool IsValidGamePath(string path)
{
if (string.IsNullOrEmpty(path))
return false;
@@ -24,7 +24,7 @@ public static bool IsValidFfxivPath(string path)
return Directory.Exists(Path.Combine(path, "game")) && Directory.Exists(Path.Combine(path, "boot"));
}
- public static bool CanFfxivMightNotBeInternationalClient(string path)
+ public static bool CanMightNotBeInternationalClient(string path)
{
if (Directory.Exists(Path.Combine(path, "sdo")))
return true;
diff --git a/src/XIVLauncher.Core/Components/MainPage/LoginFrame.cs b/src/XIVLauncher.Core/Components/MainPage/LoginFrame.cs
index b80b67d76..5f205cdc6 100644
--- a/src/XIVLauncher.Core/Components/MainPage/LoginFrame.cs
+++ b/src/XIVLauncher.Core/Components/MainPage/LoginFrame.cs
@@ -54,7 +54,7 @@ public LoginFrame(MainPage mainPage)
{
this.mainPage = mainPage;
- this.loginInput = new Input("Square Enix ID", "Enter your Square Enix ID", new Vector2(12f, 0f), 128);
+ this.loginInput = new Input("Username", "Enter your Username", new Vector2(12f, 0f), 128);
this.passwordInput = new Input("Password", "Enter your password", new Vector2(12f, 0f), 128, flags: ImGuiInputTextFlags.Password | ImGuiInputTextFlags.NoUndoRedo);
this.oneTimePasswordCheckbox = new Checkbox("Use one-time password");
diff --git a/src/XIVLauncher.Core/Components/MainPage/MainPage.cs b/src/XIVLauncher.Core/Components/MainPage/MainPage.cs
index cdd4da4c9..d5890d174 100644
--- a/src/XIVLauncher.Core/Components/MainPage/MainPage.cs
+++ b/src/XIVLauncher.Core/Components/MainPage/MainPage.cs
@@ -265,14 +265,6 @@ private async Task TryProcessLoginResult(Launcher.LoginResult loginResult,
{
if (loginResult.State == Launcher.LoginState.NoService)
{
- /*
- CustomMessageBox.Show(
- Loc.Localize("LoginNoServiceMessage",
- "This Square Enix account cannot play FINAL FANTASY XIV. Please make sure that you have an active subscription and that it is paid up.\n\nIf you bought FINAL FANTASY XIV on Steam, make sure to check the \"Use Steam service account\" checkbox while logging in.\nIf Auto-Login is enabled, hold shift while starting to access settings."),
- "Error",
- MessageBoxButton.OK, MessageBoxImage.Error, showHelpLinks: false, showDiscordLink: false, parentWindow: _window);
- */
-
throw new Exception("No service account or subscription");
return false;
@@ -280,13 +272,6 @@ private async Task TryProcessLoginResult(Launcher.LoginResult loginResult,
if (loginResult.State == Launcher.LoginState.NoTerms)
{
- /*
- CustomMessageBox.Show(
- Loc.Localize("LoginAcceptTermsMessage",
- "Please accept the FINAL FANTASY XIV Terms of Use in the official launcher."),
- "Error", MessageBoxButton.OK, MessageBoxImage.Error, showOfficialLauncher: true, parentWindow: _window);
- */
-
throw new Exception("Need to accept terms of use");
return false;
diff --git a/src/XIVLauncher.Core/Components/SettingsPage/Tabs/SettingsTabGame.cs b/src/XIVLauncher.Core/Components/SettingsPage/Tabs/SettingsTabGame.cs
index f9b42b0fa..10d6d6ebc 100644
--- a/src/XIVLauncher.Core/Components/SettingsPage/Tabs/SettingsTabGame.cs
+++ b/src/XIVLauncher.Core/Components/SettingsPage/Tabs/SettingsTabGame.cs
@@ -30,7 +30,7 @@ public class SettingsTabGame : SettingsTab
new SettingsEntry("Use DirectX11", "Use the modern DirectX11 version of the game.", () => Program.Config.IsDx11 ?? true, x => Program.Config.IsDx11 = x)
{
- CheckWarning = x => !x ? "DirectX 9 is no longer supported by Square Enix or Dalamud. Things may not work." : null
+ CheckWarning = x => !x ? "DirectX 9 is no longer supported by the game or Dalamud. Things may not work." : null
},
new SettingsEntry("Additional Arguments", "Additional args to start the game with", () => Program.Config.AdditionalArgs, x => Program.Config.AdditionalArgs = x),
diff --git a/src/XIVLauncher.nuspec b/src/XIVLauncher.nuspec
index ccb76ea1f..4f534529a 100644
--- a/src/XIVLauncher.nuspec
+++ b/src/XIVLauncher.nuspec
@@ -9,7 +9,7 @@
false
https://github.com/goaaats/FFXIVQuickLauncher
https://raw.githubusercontent.com/goaaats/FFXIVQuickLauncher/master/XIVLauncher/Resources/dalamud_icon.ico
- Custom launcher for FINAL FANTASY XIV
+ Custom launcher for the most critically acclaimed MMO
diff --git a/src/XIVLauncher/Accounts/XivAccount.cs b/src/XIVLauncher/Accounts/XivAccount.cs
index cfd79a2a1..c35e1486f 100644
--- a/src/XIVLauncher/Accounts/XivAccount.cs
+++ b/src/XIVLauncher/Accounts/XivAccount.cs
@@ -11,6 +11,9 @@ namespace XIVLauncher.Accounts
{
public class XivAccount
{
+ private const string CREDS_PREFIX_OLD = "FINAL FANTASY XIV";
+ private const string CREDS_PREFIX_NEW = "XIVLAUNCHER";
+
[JsonIgnore]
public string Id => $"{UserName}-{UseOtp}-{UseSteamServiceAccount}";
@@ -23,7 +26,32 @@ public string Password
{
get
{
- var credentials = CredentialManager.GetCredentials($"FINAL FANTASY XIV-{UserName.ToLower()}");
+ var credentials = CredentialManager.GetCredentials($"{CREDS_PREFIX_OLD}-{UserName.ToLower()}");
+
+ if (credentials != null)
+ {
+ var saved = CredentialManager.SaveCredentials($"{CREDS_PREFIX_NEW}-{UserName.ToLower()}", new NetworkCredential
+ {
+ UserName = credentials.UserName,
+ Password = credentials.Password,
+ });
+
+ if (saved)
+ {
+ try
+ {
+ CredentialManager.RemoveCredentials($"{CREDS_PREFIX_OLD}-{UserName.ToLower()}");
+ }
+ catch (Win32Exception)
+ {
+ // ignored
+ }
+ }
+ }
+ else
+ {
+ credentials = CredentialManager.GetCredentials($"{CREDS_PREFIX_NEW}-{UserName.ToLower()}");
+ }
return credentials != null ? credentials.Password : string.Empty;
}
@@ -31,14 +59,23 @@ public string Password
{
try
{
- CredentialManager.RemoveCredentials($"FINAL FANTASY XIV-{UserName.ToLower()}");
+ CredentialManager.RemoveCredentials($"{CREDS_PREFIX_OLD}-{UserName.ToLower()}");
+ }
+ catch (Win32Exception)
+ {
+ // ignored
+ }
+
+ try
+ {
+ CredentialManager.RemoveCredentials($"{CREDS_PREFIX_NEW}-{UserName.ToLower()}");
}
catch (Win32Exception)
{
// ignored
}
- CredentialManager.SaveCredentials($"FINAL FANTASY XIV-{UserName.ToLower()}", new NetworkCredential
+ CredentialManager.SaveCredentials($"{CREDS_PREFIX_NEW}-{UserName.ToLower()}", new NetworkCredential
{
UserName = UserName,
Password = value
diff --git a/src/XIVLauncher/AppUtil.cs b/src/XIVLauncher/AppUtil.cs
index 6cd3414e8..acdb31151 100644
--- a/src/XIVLauncher/AppUtil.cs
+++ b/src/XIVLauncher/AppUtil.cs
@@ -50,9 +50,9 @@ public static string GetFromResources(string resourceName)
return reader.ReadToEnd();
}
- private static readonly string defaultPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), "SquareEnix\\FINAL FANTASY XIV - A Realm Reborn");
+ private static string GetDefaultPath(string companyName, string gameName) => Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), $"{companyName}\\{gameName}");
- private static string[] GetCommonPaths()
+ private static string[] GetCommonPaths(string companyName1, string companyName2, string gameName, string rebootName)
{
var programFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86);
var paths = new List();
@@ -60,12 +60,12 @@ private static string[] GetCommonPaths()
var commonPaths = new string[]
{
- "Steam\\steamapps\\common\\FINAL FANTASY XIV Online",
- "Steam\\steamapps\\common\\FINAL FANTASY XIV - A Realm Reborn",
- "SquareEnix\\FINAL FANTASY XIV - A Realm Reborn",
- "Square Enix\\FINAL FANTASY XIV - A Realm Reborn",
- "Games\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn",
- "Games\\Square Enix\\FINAL FANTASY XIV - A Realm Reborn",
+ $"Steam\\steamapps\\common\\{gameName} Online",
+ $"Steam\\steamapps\\common\\{gameName} - {rebootName}",
+ $"{companyName1}{companyName2}\\{gameName} - {rebootName}",
+ $"\\{gameName} - {rebootName}",
+ $"Games\\{companyName1}{companyName2}\\{gameName} - {rebootName}",
+ $"Games\\{companyName1} {companyName2}\\{gameName} - {rebootName}",
};
foreach (var commonPath in commonPaths)
@@ -79,7 +79,7 @@ private static string[] GetCommonPaths()
}
}
- paths.Add(Path.Combine(programFiles, "FINAL FANTASY XIV - A Realm Reborn"));
+ paths.Add(Path.Combine(programFiles, $"{gameName} - {rebootName}"));
return paths.ToArray();
}
@@ -91,13 +91,20 @@ private static string[] GetCommonPaths()
public static string TryGamePaths()
{
+ const string CN_1 = "Square";
+ const string CN_2 = "Enix";
+ const string GN = "FINAL FANTASY XIV";
+ const string RN = "A Realm Reborn";
+
+ var defaultPath = GetDefaultPath($"{CN_1}{CN_2}", $"{GN} - {RN}");
+
try
{
var foundVersions = new Dictionary();
- foreach (var path in GetCommonPaths())
+ foreach (var path in GetCommonPaths(CN_1, CN_2, GN, RN))
{
- if (!Directory.Exists(path) || !GameHelpers.IsValidFfxivPath(path) || foundVersions.ContainsKey(path))
+ if (!Directory.Exists(path) || !GameHelpers.IsValidGamePath(path) || foundVersions.ContainsKey(path))
continue;
var baseVersion = Repository.Ffxiv.GetVer(new DirectoryInfo(path));
@@ -108,7 +115,7 @@ public static string TryGamePaths()
{
using (var hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, registryView))
{
- // Should return "C:\Program Files (x86)\SquareEnix\FINAL FANTASY XIV - A Realm Reborn\boot\ffxivboot.exe" if installed with default options.
+ // Should return "C:\Program Files (x86)\company\game\boot\ffxivboot.exe" if installed with default options.
using (var subkey = hklm.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{2B41E132-07DF-4925-A3D3-F2D1765CCDFE}"))
{
if (subkey != null && subkey.GetValue("DisplayIcon", null) is string path)
@@ -116,7 +123,7 @@ public static string TryGamePaths()
// DisplayIcon includes "boot\ffxivboot.exe", need to remove it
path = Directory.GetParent(path).Parent.FullName;
- if (Directory.Exists(path) && GameHelpers.IsValidFfxivPath(path) && !foundVersions.ContainsKey(path))
+ if (Directory.Exists(path) && GameHelpers.IsValidGamePath(path) && !foundVersions.ContainsKey(path))
{
var baseVersion = Repository.Ffxiv.GetVer(new DirectoryInfo(path));
foundVersions.Add(path, SeVersion.Parse(baseVersion));
@@ -124,14 +131,14 @@ public static string TryGamePaths()
}
}
- // Should return "C:\Program Files (x86)\Steam\steamapps\common\FINAL FANTASY XIV Online" if installed with default options.
+ // Should return "C:\Program Files (x86)\Steam\steamapps\common\game Online" if installed with default options.
foreach (var steamAppId in ValidSteamAppIds)
{
using (var subkey = hklm.OpenSubKey($@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App {steamAppId}"))
{
if (subkey != null && subkey.GetValue("InstallLocation", null) is string path)
{
- if (Directory.Exists(path) && GameHelpers.IsValidFfxivPath(path) && !foundVersions.ContainsKey(path))
+ if (Directory.Exists(path) && GameHelpers.IsValidGamePath(path) && !foundVersions.ContainsKey(path))
{
// InstallLocation is the root path of the game (the one containing boot and game) itself
var baseVersion = Repository.Ffxiv.GetVer(new DirectoryInfo(path));
diff --git a/src/XIVLauncher/Game/ProblemCheck.cs b/src/XIVLauncher/Game/ProblemCheck.cs
index 84bfec8aa..c8fcfea73 100644
--- a/src/XIVLauncher/Game/ProblemCheck.cs
+++ b/src/XIVLauncher/Game/ProblemCheck.cs
@@ -41,7 +41,7 @@ public static void RunCheck(Window parentWindow)
{
var result = CustomMessageBox.Show(
Loc.Localize("AdminCheck",
- "XIVLauncher and/or FINAL FANTASY XIV are set to run as administrator.\nThis can cause various issues, including addons failing to launch and hotkey applications failing to respond.\n\nDo you want to fix this issue automatically?"),
+ "XIVLauncher and/or the game are set to run as administrator.\nThis can cause various issues, including addons failing to launch and hotkey applications failing to respond.\n\nDo you want to fix this issue automatically?"),
"XIVLauncher", MessageBoxButton.OKCancel, MessageBoxImage.Exclamation, parentWindow: parentWindow);
if (result != MessageBoxResult.OK)
@@ -73,7 +73,7 @@ public static void RunCheck(Window parentWindow)
{
CustomMessageBox.Show(
Loc.Localize("MacTypeNag",
- "MacType was detected on this PC.\nIt will cause problems with FFXIV; both the official launcher and XIVLauncher.\n\nPlease exclude XIVLauncher, ffxivboot, ffxivlauncher, ffxivupdater and ffxiv_dx11 from MacType."),
+ "MacType was detected on this PC.\nIt will cause problems with the game; both on the official launcher and XIVLauncher.\n\nPlease exclude XIVLauncher, ffxivboot, ffxivlauncher, ffxivupdater and ffxiv_dx11 from MacType."),
"XIVLauncher Problem", MessageBoxButton.OK, MessageBoxImage.Error, parentWindow: parentWindow);
Environment.Exit(-1);
}
@@ -82,7 +82,7 @@ public static void RunCheck(Window parentWindow)
{
CustomMessageBox.Show(
Loc.Localize("MyGamesWriteAccessNag",
- "You do not have permission to write to FFXIV's My Games folder.\nThis will prevent screenshots and some character data from being saved.\n\nThis may be caused by either your antivirus or a permissions error. Please check your My Games folder permissions."),
+ "You do not have permission to write to the game's My Games folder.\nThis will prevent screenshots and some character data from being saved.\n\nThis may be caused by either your antivirus or a permissions error. Please check your My Games folder permissions."),
"XIVLauncher Problem", MessageBoxButton.OK, MessageBoxImage.Exclamation, parentWindow: parentWindow);
}
@@ -290,8 +290,15 @@ private static bool CheckMyGamesWriteAccess()
{
// Create a randomly-named file in the game's user data folder and make sure we don't
// get a permissions error.
- var myDocuments = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
- var tempFile = Path.Combine(myDocuments, "my games", "FINAL FANTASY XIV - A Realm Reborn", Guid.NewGuid().ToString());
+ var myGames = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "my games");
+ if (!Directory.Exists(myGames))
+ return true;
+
+ var targetPath = Directory.GetDirectories(myGames).FirstOrDefault(x => Path.GetDirectoryName(x)?.Length == 34);
+ if (targetPath == null)
+ return true;
+
+ var tempFile = Path.Combine(targetPath, Guid.NewGuid().ToString());
try
{
diff --git a/src/XIVLauncher/Resources/Loc/XIVLauncher_Localizable.json b/src/XIVLauncher/Resources/Loc/XIVLauncher_Localizable.json
index f4c0663e3..270d4d4e1 100644
--- a/src/XIVLauncher/Resources/Loc/XIVLauncher_Localizable.json
+++ b/src/XIVLauncher/Resources/Loc/XIVLauncher_Localizable.json
@@ -4,7 +4,7 @@
"description": "d__3.MoveNext"
},
"RunOfficialLauncherNotPresentError": {
- "message": "You don't have a FFXIV game installation set up. XIVLauncher can't start the official launcher.",
+ "message": "You don't have a game installation set up. XIVLauncher can't start the official launcher.",
"description": "CustomMessageBox.OfficialLauncherButton_Click"
},
"RunOfficialLauncherConfirmSteam": {
@@ -12,7 +12,7 @@
"description": "CustomMessageBox.OfficialLauncherButton_Click"
},
"RunOfficialLauncherSteamError": {
- "message": "Steam couldn't be loaded. Please start FFXIV directly via Steam.",
+ "message": "Steam couldn't be loaded. Please start the game directly via Steam.",
"description": "CustomMessageBox.OfficialLauncherButton_Click"
},
"ErrorAssertionFailed": {
@@ -64,11 +64,11 @@
"description": "FirstTimeSetup.NextButton_Click"
},
"GamePathSafeguardError": {
- "message": "Please do not select the \"game\" or \"boot\" folder of your FFXIV installation, and choose the folder that contains these instead.",
+ "message": "Please do not select the \"game\" or \"boot\" folder of your game installation, and choose the folder that contains these instead.",
"description": "FirstTimeSetup.NextButton_Click"
},
"GamePathInvalidConfirm": {
- "message": "The folder you selected has no FFXIV installation.\nXIVLauncher will install FFXIV the first time you log in.\nContinue?",
+ "message": "The folder you selected has no installation of the game.\nXIVLauncher will install the game the first time you log in.\nContinue?",
"description": "FirstTimeSetup.NextButton_Click"
},
"GamePathRegionConfirm": {
@@ -84,7 +84,7 @@
"description": "MainWindow.b__12_3"
},
"MaintenanceQueueBootPatch": {
- "message": "A patch for the FFXIV launcher was detected.\nThis usually means that there is a patch for the game as well.\n\nYou will now be logged in.",
+ "message": "A patch for the official launcher was detected.\nThis usually means that there is a patch for the game as well.\n\nYou will now be logged in.",
"description": "d__21.MoveNext"
},
"SettingsGamePatchPathError": {
@@ -100,11 +100,11 @@
"description": "SettingsControl.RunIntegrityCheck_OnClick"
},
"DalamudIncompatible": {
- "message": "Dalamud was not yet updated for your current FFXIV version.\nThis is common after patches, so please be patient or ask on the Discord for a status update!",
+ "message": "Dalamud was not yet updated for your current game version.\nThis is common after patches, so please be patient or ask on the Discord for a status update!",
"description": "SettingsControl.EnableHooksCheckBox_OnChecked"
},
"DalamudCompatCheckFailed": {
- "message": "Could not contact the server to get the current compatible FFXIV version Dalamud. This might mean that your .NET installation is too old.\nPlease check the Discord for more information.",
+ "message": "Could not contact the server to get the current compatible game version for Dalamud. This might mean that your .NET installation is too old.\nPlease check the Discord for more information.",
"description": "SettingsControl.EnableHooksCheckBox_OnChecked"
},
"PluginPathNotFound": {
@@ -335,14 +335,6 @@
"message": "Running integrity check...",
"description": "IntegrityCheckProgressWindowViewModel.SetupLoc"
},
- "LoginWebExceptionContent": {
- "message": "XIVLauncher could not establish a connection to the game servers.\n\nThis may be a temporary issue, or a problem with your internet connection. Please try again later.",
- "description": "MainWindowViewModel.ShowInternetError"
- },
- "LoginNoOauthTitle": {
- "message": "Login issue",
- "description": "MainWindowViewModel.ShowInternetError"
- },
"PatchManDlFailure": {
"message": "XIVLauncher could not verify the downloaded game files. Please restart and try again.\n\nThis usually indicates a problem with your internet connection.\nIf this error persists, try using a VPN set to Japan.\n\nContext: {0}\n{1}",
"description": "MainWindowViewModel.PatcherOnFail"
@@ -352,7 +344,7 @@
"description": "MainWindowViewModel.InstallerOnFail"
},
"LoginBoxUsername": {
- "message": "Square Enix ID",
+ "message": "Username",
"description": "MainWindowViewModel.SetupLoc"
},
"LoginBoxPassword": {
@@ -437,22 +429,22 @@
},
"GateUnreachable": {
"message": "The login servers could not be reached. This usually indicates that the game is under maintenance, or that your connection to the login servers is unstable.\n\nPlease try again later.",
- "description": "d__23.MoveNext"
+ "description": "d__22.MoveNext"
},
"GateClosed": {
- "message": "FFXIV is currently under maintenance. Please try again later or see official sources for more information.",
- "description": "d__23.MoveNext"
+ "message": "The game is currently under maintenance. Please try again later or see official sources for more information.",
+ "description": "d__22.MoveNext"
},
"CheckBootVersionError": {
"message": "XIVLauncher was not able to check the boot version for the select game installation. This can happen if a maintenance is currently in progress or if your connection to the version check server is not available. Please report this error if you are able to login with the official launcher, but not XIVLauncher.",
- "description": "d__34.MoveNext"
+ "description": "d__33.MoveNext"
},
"BootPatchFailure": {
"message": "Could not patch boot.",
- "description": "d__34.MoveNext"
+ "description": "d__33.MoveNext"
},
"KillswitchText": {
- "message": "XIVLauncher cannot start the game at this time, as Square Enix has made changes to the login process.\nWe need to adjust to these changes and verify that our adjustments are safe before we can re-enable the launcher. Please try again later.\n\nWe apologize for these circumstances.\n\nYou can use the \"Official Launcher\" button below to start the official launcher.\n",
+ "message": "XIVLauncher cannot start the game at this time, as there were changes to the login process during a recent patch.\nWe need to adjust to these changes and verify that our adjustments are safe before we can re-enable the launcher. Please try again later.\n\nWe apologize for these circumstances.\n\nYou can use the \"Official Launcher\" button below to start the official launcher.\n",
"description": "d__21.MoveNext"
},
"EmptyUsernameError": {
@@ -468,220 +460,228 @@
"description": "d__21.MoveNext"
},
"UidCacheInstallError": {
- "message": "You enabled the UID cache in the patcher settings.\nThis setting does not allow you to reinstall FFXIV.\n\nIf you want to reinstall FFXIV, please take care to disable it first.",
+ "message": "You enabled the UID cache in the patcher settings.\nThis setting does not allow you to reinstall the game.\n\nIf you want to reinstall the game, please take care to disable it first.",
"description": "d__21.MoveNext"
},
"GameRepairSuccess0": {
"message": "All game files seem to be valid.",
- "description": "d__26.MoveNext"
+ "description": "d__25.MoveNext"
},
"GameRepairSuccess1": {
"message": "XIVLauncher has successfully repaired 1 game file.",
- "description": "d__26.MoveNext"
+ "description": "d__25.MoveNext"
},
"GameRepairSuccessPlural": {
"message": "XIVLauncher has successfully repaired {0} game files.",
- "description": "d__26.MoveNext"
+ "description": "d__25.MoveNext"
},
"GameRepairSuccessMoved1": {
"message": "Additionally, 1 file that did not come with the original game installation has been moved to {0}.\nIf you were using GShade, you will have to reinstall it.",
- "description": "d__26.MoveNext"
+ "description": "d__25.MoveNext"
},
"GameRepairSuccessMovedPlural": {
"message": "Additionally, {0} files that did not come with the original game installation have been moved to {1}.\nIf you were using GShade, you will have to reinstall it.",
- "description": "d__26.MoveNext"
+ "description": "d__25.MoveNext"
},
"GameRepairSuccess_LaunchGame": {
"message": "_Launch game",
- "description": "d__26.MoveNext"
+ "description": "d__25.MoveNext"
},
"GameRepairSuccess_VerifyAgain": {
"message": "_Verify again",
- "description": "d__26.MoveNext"
+ "description": "d__25.MoveNext"
},
"GameRepairSuccess_Close": {
"message": "_Close",
- "description": "d__26.MoveNext"
+ "description": "d__25.MoveNext"
},
"NoVersionReferenceError": {
"message": "The version of the game you are on cannot be repaired by XIVLauncher yet, as reference information is not yet available.\nPlease try again later.",
- "description": "d__26.MoveNext"
+ "description": "d__25.MoveNext"
},
"GameRepairSuccess_TryAgain": {
"message": "_Try again",
- "description": "d__26.MoveNext"
+ "description": "d__25.MoveNext"
},
"GameRepairError": {
"message": "An error occurred while repairing the game files.\nYou may have to reinstall the game.",
- "description": "d__26.MoveNext"
+ "description": "d__25.MoveNext"
},
"PatcherAlreadyInProgress": {
"message": "XIVLauncher is already patching your game in another instance. Please check if XIVLauncher is still open.",
- "description": "d__26.MoveNext"
+ "description": "d__25.MoveNext"
},
"DalamudVc2019RedistError": {
"message": "The XIVLauncher in-game addon needs the Microsoft Visual C++ 2015-2019 redistributable to be installed to continue. Please install it from the Microsoft homepage.",
- "description": "d__30.MoveNext"
+ "description": "d__29.MoveNext"
},
"DalamudArchError": {
"message": "Dalamud cannot run your computer's architecture. Please make sure that you are running a 64-bit version of Windows.\nIf you are using Windows on ARM, please make sure that x64-Emulation is enabled for XIVLauncher.",
- "description": "d__30.MoveNext"
+ "description": "d__29.MoveNext"
},
"DalamudRunnerError": {
"message": "Could not launch Dalamud successfully. This might be caused by your antivirus.\nTo prevent this, please add an exception for the folder \"%AppData%\\XIVLauncher\\addons\".",
- "description": "d__30.MoveNext"
+ "description": "d__29.MoveNext"
},
"DalamudEnsurementError": {
"message": "Could not download necessary data files to use Dalamud and plugins.\nThis is likely a problem with your internet connection - the game will start, but you will not be able to use plugins.",
- "description": "d__30.MoveNext"
+ "description": "d__29.MoveNext"
},
"AddonLoadError": {
"message": "This could be caused by your antivirus, please check its logs and add any needed exclusions.",
- "description": "d__30.MoveNext"
+ "description": "d__29.MoveNext"
},
"GameIsOpenError": {
"message": "The game and/or the official launcher are open. XIVLauncher cannot patch the game if this is the case.\nPlease close the official launcher and try again.",
- "description": "d__35.MoveNext"
+ "description": "d__34.MoveNext"
},
"PatchManNoInstaller": {
"message": "The patch installer could not start correctly.\n{0}\n\nIf you have denied access to it, please try again. If this issue persists, please contact us via Discord.",
- "description": "d__35.MoveNext"
+ "description": "d__34.MoveNext"
},
"FreeSpaceError": {
"message": "There is not enough space on your drive to download patches.\n\nYou can change the location patches are downloaded to in the settings.\n\nRequired:{0}\nFree:{1}",
- "description": "d__35.MoveNext"
+ "description": "d__34.MoveNext"
},
"FreeSpaceErrorAll": {
"message": "There is not enough space on your drive to download all patches.\n\nYou can change the location patches are downloaded to in the XIVLauncher settings.\n\nRequired:{0}\nFree:{1}",
- "description": "d__35.MoveNext"
+ "description": "d__34.MoveNext"
},
"FreeSpaceGameError": {
"message": "There is not enough space on your drive to install patches.\n\nYou can change the location the game is installed to in the settings.\n\nRequired:{0}\nFree:{1}",
- "description": "d__35.MoveNext"
+ "description": "d__34.MoveNext"
+ },
+ "LoginNoOauthTitle": {
+ "message": "Login issue",
+ "description": "d__23.MoveNext"
},
"LoginIoErrorSummary": {
"message": "Could not locate game data files.",
- "description": "d__24.MoveNext"
+ "description": "d__23.MoveNext"
},
"LoginIoErrorActionable": {
"message": "This may mean that the game path set in XIVLauncher isn't preset, e.g. on a disconnected drive or network storage. Please check the game path in the XIVLauncher settings.",
- "description": "d__24.MoveNext"
+ "description": "d__23.MoveNext"
},
"LoginInvalidVersionFiles": {
"message": "Version information could not be read from your game files.\n\nYou need to reinstall or repair the game files. Right click the login button in XIVLauncher, and choose \"Repair Game\".",
- "description": "d__24.MoveNext"
+ "description": "d__23.MoveNext"
},
"LoginSteamIssue": {
- "message": "Could not authenticate with Steam. Please make sure that Steam is running and that you are logged in with the account tied to your SE ID.\nIf you play using the FFXIV Free Trial, please check the \"Free Trial mode\" checkbox in the \"About\" tab of the XIVLauncher settings.\n\nContext: {0}",
- "description": "d__24.MoveNext"
+ "message": "Could not authenticate with Steam. Please make sure that Steam is running and that you are logged in with the account tied to your SE ID.\nIf you play using the Free Trial, please check the \"Free Trial mode\" checkbox in the \"About\" tab of the XIVLauncher settings.\n\nContext: {0}",
+ "description": "d__23.MoveNext"
},
"LoginSteamWrongAccount": {
"message": "The account you are logging in to is NOT the one that is linked to the Steam account on your PC. You can only log in with the account tied to your SE ID while using this Steam account.\n\nPlease log into matching accounts.",
- "description": "d__24.MoveNext"
+ "description": "d__23.MoveNext"
},
"LoginSteamLinkNeeded": {
"message": "Before starting the game with this account, you need to link it to your Steam account with the official launcher.\nPlease link your accounts and try again. You can do so by clicking the \"Official Launcher\" button.",
- "description": "d__24.MoveNext"
+ "description": "d__23.MoveNext"
},
"LoginGenericError": {
"message": "Could not log into your SE account.\nPlease check your username and password.",
- "description": "d__24.MoveNext"
+ "description": "d__23.MoveNext"
},
"LoginGenericErrorCheckOtpUse": {
"message": "If you're using OTP, then tick on \"{0}\" checkbox and try again.",
- "description": "d__24.MoveNext"
+ "description": "d__23.MoveNext"
},
"LoginGenericErrorCheckOtp": {
"message": "Double check whether your OTP device's clock is correct.\nIf you have recently logged in, then try logging in again in 30 seconds.",
- "description": "d__24.MoveNext"
+ "description": "d__23.MoveNext"
+ },
+ "LoginWebExceptionContent": {
+ "message": "XIVLauncher could not establish a connection to the game servers.\n\nThis may be a temporary issue, or a problem with your internet connection. Please try again later.",
+ "description": "d__23.MoveNext"
},
"LoginGenericServerIssue": {
"message": "The server has sent an invalid response. This is known to occur during outages or when servers are under heavy load.\nPlease wait a minute and try again, or try using the official launcher.\n\nYou can learn more about outages on the Lodestone.",
- "description": "d__24.MoveNext"
+ "description": "d__23.MoveNext"
},
"CheckLoginInfoNotAdditionally": {
"message": "Please check your login information or try again.",
- "description": "d__24.MoveNext"
+ "description": "d__23.MoveNext"
},
"LoginNoOauthAutologinHint": {
"message": "\n\nAuto-Login has been disabled.",
- "description": "d__24.MoveNext"
+ "description": "d__23.MoveNext"
},
"LoginNoServiceMessage": {
- "message": "This Square Enix account cannot play FINAL FANTASY XIV. Please make sure that you have an active subscription and that it is paid up.\n\nIf you bought FINAL FANTASY XIV on Steam, make sure to check the \"Use Steam service account\" checkbox while logging in.\nIf Auto-Login is enabled, hold shift while starting to access settings.",
- "description": "d__25.MoveNext"
+ "message": "This account isn't eligible to play the game. Please make sure that you have an active subscription and that it is paid up.\n\nIf you bought the game on Steam, make sure to check the \"Use Steam service account\" checkbox while logging in.\nIf Auto-Login is enabled, hold shift while starting to access settings.",
+ "description": "d__24.MoveNext"
},
"LoginAcceptTermsMessage": {
- "message": "Please accept the FINAL FANTASY XIV Terms of Use in the official launcher.",
- "description": "d__25.MoveNext"
+ "message": "Please accept the Terms of Use in the official launcher.",
+ "description": "d__24.MoveNext"
},
"EverythingIsFuckedMessage": {
"message": "Certain essential game files were modified/broken by a third party and the game can neither update nor start.\nYou have to reinstall the game to continue.\n\nIf this keeps happening, please contact us via Discord.",
- "description": "d__25.MoveNext"
+ "description": "d__24.MoveNext"
},
"LoginRepairResponseIsNotNeedsPatchGame": {
"message": "The server sent an incorrect response - the repair cannot proceed.",
- "description": "d__25.MoveNext"
+ "description": "d__24.MoveNext"
},
"PatchInstallDisclaimer": {
"message": "A new patch has been found that needs to be installed before you can play.\nDo you wish for XIVLauncher to install it?",
- "description": "d__25.MoveNext"
+ "description": "d__24.MoveNext"
},
"LoginNoStartOk": {
"message": "An update check was executed and any pending updates were installed.",
- "description": "d__25.MoveNext"
+ "description": "d__24.MoveNext"
},
"LaunchGameNonZeroExitCode": {
"message": "It looks like the game has exited with a fatal error. Do you want to relaunch the game?\n\nExit code: 0x{0:X8}",
- "description": "d__25.MoveNext"
+ "description": "d__24.MoveNext"
},
"LaunchGameRelaunch": {
"message": "_Relaunch",
- "description": "d__25.MoveNext"
+ "description": "d__24.MoveNext"
},
"LaunchGameClose": {
"message": "_Close",
- "description": "d__25.MoveNext"
+ "description": "d__24.MoveNext"
},
"LaunchGameDoNotAskAgain": {
"message": "_Don't ask again",
- "description": "d__25.MoveNext"
+ "description": "d__24.MoveNext"
},
"LaunchGameRetry": {
"message": "_Try again",
- "description": "d__25.MoveNext"
+ "description": "d__24.MoveNext"
},
"MultiboxDeniedWarningSummary": {
"message": "You can't launch more than two instances of the game by default.",
- "description": "d__25.MoveNext"
+ "description": "d__24.MoveNext"
},
"MultiboxDeniedWarningActionable": {
"message": "Please check if there is an instance of the game that did not close correctly. (Detected: {0})",
- "description": "d__25.MoveNext"
+ "description": "d__24.MoveNext"
},
"LaunchGameKillThenRetry": {
"message": "_Kill then try again",
- "description": "d__25.MoveNext"
+ "description": "d__24.MoveNext"
},
"GameExitedPrematurelyErrorSummary": {
"message": "XIVLauncher could not start the game correctly.",
- "description": "d__25.MoveNext"
+ "description": "d__24.MoveNext"
},
"GameExitedPrematurelyErrorActionable": {
"message": "This may be a temporary issue. Please try restarting your PC.\nIt is possible that your game installation is not valid - you can repair your game installation by right clicking the Login button and choosing \"Repair game\".",
- "description": "d__25.MoveNext"
+ "description": "d__24.MoveNext"
},
"BinaryNotPresentErrorSummary": {
"message": "Could not find the game executable.",
- "description": "d__25.MoveNext"
+ "description": "d__24.MoveNext"
},
"BinaryNotPresentErrorActionable": {
"message": "This might be caused by your antivirus. You may have to reinstall the game.",
- "description": "d__25.MoveNext"
+ "description": "d__24.MoveNext"
},
"MultipleErrors": {
"message": "Multiple errors have occurred.",
- "description": "d__25.MoveNext"
+ "description": "d__24.MoveNext"
},
"OtpInputPrompt": {
"message": "Please enter your OTP key.",
@@ -1024,7 +1024,7 @@
"description": "UpdateLoadingDialogViewModel.SetupLoc"
},
"AdminCheck": {
- "message": "XIVLauncher and/or FINAL FANTASY XIV are set to run as administrator.\nThis can cause various issues, including addons failing to launch and hotkey applications failing to respond.\n\nDo you want to fix this issue automatically?",
+ "message": "XIVLauncher and/or the game are set to run as administrator.\nThis can cause various issues, including addons failing to launch and hotkey applications failing to respond.\n\nDo you want to fix this issue automatically?",
"description": "ProblemCheck.RunCheck"
},
"AdminCheckNag": {
@@ -1032,11 +1032,11 @@
"description": "ProblemCheck.RunCheck"
},
"MacTypeNag": {
- "message": "MacType was detected on this PC.\nIt will cause problems with FFXIV; both the official launcher and XIVLauncher.\n\nPlease exclude XIVLauncher, ffxivboot, ffxivlauncher, ffxivupdater and ffxiv_dx11 from MacType.",
+ "message": "MacType was detected on this PC.\nIt will cause problems with the game; both on the official launcher and XIVLauncher.\n\nPlease exclude XIVLauncher, ffxivboot, ffxivlauncher, ffxivupdater and ffxiv_dx11 from MacType.",
"description": "ProblemCheck.RunCheck"
},
"MyGamesWriteAccessNag": {
- "message": "You do not have permission to write to FFXIV's My Games folder.\nThis will prevent screenshots and some character data from being saved.\n\nThis may be caused by either your antivirus or a permissions error. Please check your My Games folder permissions.",
+ "message": "You do not have permission to write to the game's My Games folder.\nThis will prevent screenshots and some character data from being saved.\n\nThis may be caused by either your antivirus or a permissions error. Please check your My Games folder permissions.",
"description": "ProblemCheck.RunCheck"
},
"GShadeSymlinks": {
diff --git a/src/XIVLauncher/Windows/AccountSwitcher.xaml.cs b/src/XIVLauncher/Windows/AccountSwitcher.xaml.cs
index 19c355f5a..441716904 100644
--- a/src/XIVLauncher/Windows/AccountSwitcher.xaml.cs
+++ b/src/XIVLauncher/Windows/AccountSwitcher.xaml.cs
@@ -171,7 +171,7 @@ private void CreateDesktopShortcut_OnClick(object sender, RoutedEventArgs e)
var shell = new WshShell();
var shortcutAddress = (string)shell.SpecialFolders.Item(ref shDesktop) + $@"\XIVLauncher - {selectedEntry.Account.UserName} {(selectedEntry.Account.UseSteamServiceAccount ? "(Steam)" : "")}.lnk";
var shortcut = (IWshShortcut)shell.CreateShortcut(shortcutAddress);
- shortcut.Description = $"Open XIVLauncher with the {selectedEntry.Account.UserName} Square Enix account.";
+ shortcut.Description = $"Open XIVLauncher with the \"{selectedEntry.Account.UserName}\" account.";
shortcut.TargetPath = Path.Combine(new DirectoryInfo(Environment.CurrentDirectory).Parent.FullName, "XIVLauncher.exe");
shortcut.Arguments = $"--account={selectedEntry.Account.Id}";
shortcut.WorkingDirectory = Environment.CurrentDirectory;
diff --git a/src/XIVLauncher/Windows/CustomMessageBox.xaml.cs b/src/XIVLauncher/Windows/CustomMessageBox.xaml.cs
index 22c30702f..f81d4aea2 100644
--- a/src/XIVLauncher/Windows/CustomMessageBox.xaml.cs
+++ b/src/XIVLauncher/Windows/CustomMessageBox.xaml.cs
@@ -208,7 +208,7 @@ private void OfficialLauncherButton_Click(object sender, RoutedEventArgs e)
{
if (App.Settings.GamePath == null || !GameHelpers.GetOfficialLauncherPath(App.Settings.GamePath).Exists)
{
- CustomMessageBox.Show(Loc.Localize("RunOfficialLauncherNotPresentError", "You don't have a FFXIV game installation set up. XIVLauncher can't start the official launcher."), "Error", MessageBoxButton.OK, MessageBoxImage.Error, parentWindow: this);
+ CustomMessageBox.Show(Loc.Localize("RunOfficialLauncherNotPresentError", "You don't have a game installation set up. XIVLauncher can't start the official launcher."), "Error", MessageBoxButton.OK, MessageBoxImage.Error, parentWindow: this);
return;
}
@@ -235,7 +235,7 @@ private void OfficialLauncherButton_Click(object sender, RoutedEventArgs e)
}
catch (Exception)
{
- CustomMessageBox.Show(Loc.Localize("RunOfficialLauncherSteamError", "Steam couldn't be loaded. Please start FFXIV directly via Steam."), "Error", MessageBoxButton.OK, MessageBoxImage.Error, parentWindow: this);
+ CustomMessageBox.Show(Loc.Localize("RunOfficialLauncherSteamError", "Steam couldn't be loaded. Please start the game directly via Steam."), "Error", MessageBoxButton.OK, MessageBoxImage.Error, parentWindow: this);
return;
}
diff --git a/src/XIVLauncher/Windows/FirstTimeSetupWindow.xaml.cs b/src/XIVLauncher/Windows/FirstTimeSetupWindow.xaml.cs
index 13f130806..4da1d3a98 100644
--- a/src/XIVLauncher/Windows/FirstTimeSetupWindow.xaml.cs
+++ b/src/XIVLauncher/Windows/FirstTimeSetupWindow.xaml.cs
@@ -83,21 +83,21 @@ private void NextButton_Click(object sender, RoutedEventArgs e)
if (!GameHelpers.LetChoosePath(GamePathEntry.Text))
{
- CustomMessageBox.Show(Loc.Localize("GamePathSafeguardError", "Please do not select the \"game\" or \"boot\" folder of your FFXIV installation, and choose the folder that contains these instead."), "Error",
+ CustomMessageBox.Show(Loc.Localize("GamePathSafeguardError", "Please do not select the \"game\" or \"boot\" folder of your game installation, and choose the folder that contains these instead."), "Error",
MessageBoxButton.OK, MessageBoxImage.Error, parentWindow: this);
return;
}
- if (!GameHelpers.IsValidFfxivPath(GamePathEntry.Text))
+ if (!GameHelpers.IsValidGamePath(GamePathEntry.Text))
{
- if (CustomMessageBox.Show(Loc.Localize("GamePathInvalidConfirm", "The folder you selected has no FFXIV installation.\nXIVLauncher will install FFXIV the first time you log in.\nContinue?"), "XIVLauncher",
+ if (CustomMessageBox.Show(Loc.Localize("GamePathInvalidConfirm", "The folder you selected has no installation of the game.\nXIVLauncher will install the game the first time you log in.\nContinue?"), "XIVLauncher",
MessageBoxButton.YesNo, MessageBoxImage.Information, parentWindow: this) != MessageBoxResult.Yes)
{
return;
}
}
- if (GameHelpers.CanFfxivMightNotBeInternationalClient(GamePathEntry.Text))
+ if (GameHelpers.CanMightNotBeInternationalClient(GamePathEntry.Text))
{
if (CustomMessageBox.Show(Loc.Localize("GamePathRegionConfirm", "The folder you selected might be the Chinese or Korean release of the game. XIVLauncher only supports international release of the game.\nIs the folder you've selected indeed for the international version?"), "XIVLauncher",
MessageBoxButton.YesNo, MessageBoxImage.Warning, parentWindow: this) != MessageBoxResult.Yes)
diff --git a/src/XIVLauncher/Windows/MainWindow.xaml.cs b/src/XIVLauncher/Windows/MainWindow.xaml.cs
index 38ba48bcf..f77e54d3b 100644
--- a/src/XIVLauncher/Windows/MainWindow.xaml.cs
+++ b/src/XIVLauncher/Windows/MainWindow.xaml.cs
@@ -454,7 +454,7 @@ private async void OnMaintenanceQueueTimerEvent(Object source, System.Timers.Ela
if (bootPatches != null)
{
CustomMessageBox.Show(Loc.Localize("MaintenanceQueueBootPatch",
- "A patch for the FFXIV launcher was detected.\nThis usually means that there is a patch for the game as well.\n\nYou will now be logged in."), "XIVLauncher", parentWindow: this);
+ "A patch for the official launcher was detected.\nThis usually means that there is a patch for the game as well.\n\nYou will now be logged in."), "XIVLauncher", parentWindow: this);
}
Dispatcher.Invoke(() =>
diff --git a/src/XIVLauncher/Windows/SettingsControl.xaml.cs b/src/XIVLauncher/Windows/SettingsControl.xaml.cs
index ce1289a7f..ae2318b75 100644
--- a/src/XIVLauncher/Windows/SettingsControl.xaml.cs
+++ b/src/XIVLauncher/Windows/SettingsControl.xaml.cs
@@ -330,17 +330,17 @@ private void EnableHooksCheckBox_OnChecked(object sender, RoutedEventArgs e)
{
try
{
- if (!string.IsNullOrEmpty(ViewModel.GamePath) && GameHelpers.IsValidFfxivPath(ViewModel.GamePath) && !DalamudLauncher.CanRunDalamud(new DirectoryInfo(ViewModel.GamePath)))
+ if (!string.IsNullOrEmpty(ViewModel.GamePath) && GameHelpers.IsValidGamePath(ViewModel.GamePath) && !DalamudLauncher.CanRunDalamud(new DirectoryInfo(ViewModel.GamePath)))
{
CustomMessageBox.Show(
- Loc.Localize("DalamudIncompatible", "Dalamud was not yet updated for your current FFXIV version.\nThis is common after patches, so please be patient or ask on the Discord for a status update!"),
+ Loc.Localize("DalamudIncompatible", "Dalamud was not yet updated for your current game version.\nThis is common after patches, so please be patient or ask on the Discord for a status update!"),
"XIVLauncher", MessageBoxButton.OK, MessageBoxImage.Asterisk, parentWindow: Window.GetWindow(this));
}
}
catch (Exception exc)
{
CustomMessageBox.Show(Loc.Localize("DalamudCompatCheckFailed",
- "Could not contact the server to get the current compatible FFXIV version Dalamud. This might mean that your .NET installation is too old.\nPlease check the Discord for more information."), "XIVLauncher Problem", MessageBoxButton.OK, MessageBoxImage.Hand, parentWindow: Window.GetWindow(this));
+ "Could not contact the server to get the current compatible game version for Dalamud. This might mean that your .NET installation is too old.\nPlease check the Discord for more information."), "XIVLauncher Problem", MessageBoxButton.OK, MessageBoxImage.Hand, parentWindow: Window.GetWindow(this));
Log.Error(exc, "Couldn't check dalamud compatibility.");
}
@@ -517,7 +517,7 @@ private void GamePathEntry_OnTextChanged(object sender, TextChangedEventArgs e)
try
{
isBootOrGame = !GameHelpers.LetChoosePath(ViewModel.GamePath);
- mightBeNonInternationalVersion = GameHelpers.CanFfxivMightNotBeInternationalClient(ViewModel.GamePath);
+ mightBeNonInternationalVersion = GameHelpers.CanMightNotBeInternationalClient(ViewModel.GamePath);
}
catch (Exception ex)
{
diff --git a/src/XIVLauncher/Windows/ViewModel/MainWindowViewModel.cs b/src/XIVLauncher/Windows/ViewModel/MainWindowViewModel.cs
index e3f6a20da..12aaf6dcd 100644
--- a/src/XIVLauncher/Windows/ViewModel/MainWindowViewModel.cs
+++ b/src/XIVLauncher/Windows/ViewModel/MainWindowViewModel.cs
@@ -172,7 +172,7 @@ private async Task Login(string username, string password, bool isOtp, bool isSt
if (bootver > ver615)
{
- CustomMessageBox.Show(Loc.Localize("KillswitchText", "XIVLauncher cannot start the game at this time, as Square Enix has made changes to the login process." +
+ CustomMessageBox.Show(Loc.Localize("KillswitchText", "XIVLauncher cannot start the game at this time, as there were changes to the login process during a recent patch." +
"\nWe need to adjust to these changes and verify that our adjustments are safe before we can re-enable the launcher. Please try again later." +
"\n\nWe apologize for these circumstances.\n\nYou can use the \"Official Launcher\" button below to start the official launcher." +
"\n")
@@ -219,7 +219,7 @@ private async Task Login(string username, string password, bool isOtp, bool isSt
{
CustomMessageBox.Show(
Loc.Localize("UidCacheInstallError",
- "You enabled the UID cache in the patcher settings.\nThis setting does not allow you to reinstall FFXIV.\n\nIf you want to reinstall FFXIV, please take care to disable it first."),
+ "You enabled the UID cache in the patcher settings.\nThis setting does not allow you to reinstall the game.\n\nIf you want to reinstall the game, please take care to disable it first."),
"XIVLauncher Error", MessageBoxButton.OK, MessageBoxImage.Error, parentWindow: _window);
return;
@@ -293,7 +293,7 @@ private async Task CheckGateStatus()
if (!gateStatus.Status)
{
- var message = Loc.Localize("GateClosed", "FFXIV is currently under maintenance. Please try again later or see official sources for more information.");
+ var message = Loc.Localize("GateClosed", "The game is currently under maintenance. Please try again later or see official sources for more information.");
if (gateStatus.Message != null)
{
@@ -354,7 +354,7 @@ private async Task CheckGateStatus()
if (loginStatus == false)
{
- CustomMessageBox.Builder.NewFrom(Loc.Localize("GateClosed", "FFXIV is currently under maintenance. Please try again later or see official sources for more information."))
+ CustomMessageBox.Builder.NewFrom(Loc.Localize("GateClosed", "The game is currently under maintenance. Please try again later or see official sources for more information."))
.WithImage(MessageBoxImage.Asterisk)
.WithButtons(MessageBoxButton.OK)
.WithCaption("XIVLauncher")
@@ -405,7 +405,7 @@ private async Task CheckGateStatus()
else if (ex is SteamException)
{
msgbox.WithTextFormatted(Loc.Localize("LoginSteamIssue",
- "Could not authenticate with Steam. Please make sure that Steam is running and that you are logged in with the account tied to your SE ID.\nIf you play using the FFXIV Free Trial, please check the \"Free Trial mode\" checkbox in the \"About\" tab of the XIVLauncher settings.\n\nContext: {0}"), ex.Message);
+ "Could not authenticate with Steam. Please make sure that Steam is running and that you are logged in with the account tied to your SE ID.\nIf you play using the Free Trial, please check the \"Free Trial mode\" checkbox in the \"About\" tab of the XIVLauncher settings.\n\nContext: {0}"), ex.Message);
if (ex.InnerException != null)
msgbox.WithAppendDescription(ex.InnerException.ToString());
@@ -486,7 +486,7 @@ private async Task TryProcessLoginResult(Launcher.LoginResult loginResult,
{
CustomMessageBox.Show(
Loc.Localize("LoginNoServiceMessage",
- "This Square Enix account cannot play FINAL FANTASY XIV. Please make sure that you have an active subscription and that it is paid up.\n\nIf you bought FINAL FANTASY XIV on Steam, make sure to check the \"Use Steam service account\" checkbox while logging in.\nIf Auto-Login is enabled, hold shift while starting to access settings."),
+ "This account isn't eligible to play the game. Please make sure that you have an active subscription and that it is paid up.\n\nIf you bought the game on Steam, make sure to check the \"Use Steam service account\" checkbox while logging in.\nIf Auto-Login is enabled, hold shift while starting to access settings."),
"Error",
MessageBoxButton.OK, MessageBoxImage.Error, showHelpLinks: false, showDiscordLink: false, parentWindow: _window);
@@ -497,7 +497,7 @@ private async Task TryProcessLoginResult(Launcher.LoginResult loginResult,
{
CustomMessageBox.Show(
Loc.Localize("LoginAcceptTermsMessage",
- "Please accept the FINAL FANTASY XIV Terms of Use in the official launcher."),
+ "Please accept the Terms of Use in the official launcher."),
"Error", MessageBoxButton.OK, MessageBoxImage.Error, showOfficialLauncher: true, parentWindow: _window);
return false;
@@ -1423,7 +1423,7 @@ public string LoadingDialogMessage
private void SetupLoc()
{
- LoginUsernameLoc = Loc.Localize("LoginBoxUsername", "Square Enix ID");
+ LoginUsernameLoc = Loc.Localize("LoginBoxUsername", "Username");
LoginPasswordLoc = Loc.Localize("LoginBoxPassword", "Password");
AutoLoginLoc = Loc.Localize("LoginBoxAutoLogin", "Log in automatically");
OtpLoc = Loc.Localize("LoginBoxOtp", "Use One-Time-Passwords");
diff --git a/src/XIVLauncher/Windows/ViewModel/SettingsControlViewModel.cs b/src/XIVLauncher/Windows/ViewModel/SettingsControlViewModel.cs
index 5db8cde4e..c3f0f3c09 100644
--- a/src/XIVLauncher/Windows/ViewModel/SettingsControlViewModel.cs
+++ b/src/XIVLauncher/Windows/ViewModel/SettingsControlViewModel.cs
@@ -64,7 +64,7 @@ private void SetupLoc()
GamePathLoc = Loc.Localize("ChooseGamePath",
"Please select the folder your game is installed in.\r\nIt should contain the folders \"game\" and \"boot\".");
GamePathSafeguardLoc = Loc.Localize("GamePathSafeguardError",
- "Please do not select the \"game\" or \"boot\" folder of your FFXIV installation, and choose the folder that contains these instead.");
+ "Please do not select the \"game\" or \"boot\" folder of your game installation, and choose the folder that contains these instead.");
GamePathSafeguardRegionLoc = Loc.Localize("GamePathSafeguardRegionWarning",
"XIVLauncher does not support Chinese or Korean version of the game. Make sure this path indeed is for the international version.");
SteamCheckBoxLoc = Loc.Localize("FirstTimeSteamCheckBox", "Enable Steam integration");
diff --git a/src/XIVLauncher/XIVLauncher.csproj b/src/XIVLauncher/XIVLauncher.csproj
index 33fa0a4bb..2128b1165 100644
--- a/src/XIVLauncher/XIVLauncher.csproj
+++ b/src/XIVLauncher/XIVLauncher.csproj
@@ -2,7 +2,7 @@
XIVLauncher
XIVLauncher
- Custom launcher for FFXIV.
+ Custom launcher for the most critically acclaimed MMO.
6.2.43
diff --git a/xivlauncher.appdata.xml b/xivlauncher.appdata.xml
index 8fc2f7117..f8dae52bd 100644
--- a/xivlauncher.appdata.xml
+++ b/xivlauncher.appdata.xml
@@ -4,10 +4,10 @@
CC0-1.0
GPL-3.0
XIVLauncher
- Launcher & seamless Linux integration for Final Fantasy XIV Online
+ Launcher & seamless Linux integration for FFXIV
- XIVLauncher is a custom launcher for FINAL FANTASY XIV that offers painless patching, a customized WINE version for perfect compatibility with FFXIV, a multitude of useful plugins and seamless Steam Deck integration. Install, log in, patch, and get started!
+ XIVLauncher is a custom launcher for FFXIV that offers painless patching, a customized WINE version for perfect compatibility with the game, a multitude of useful plugins and seamless Steam Deck integration. Install, log in, patch, and get started!
https://goatcorp.github.io/