diff --git a/PKHeX.Core/PKM/Strings/StringConverter3.cs b/PKHeX.Core/PKM/Strings/StringConverter3.cs
index 264ce78c2..f2717610b 100644
--- a/PKHeX.Core/PKM/Strings/StringConverter3.cs
+++ b/PKHeX.Core/PKM/Strings/StringConverter3.cs
@@ -127,7 +127,7 @@ public static byte SetG3Char(char chr, bool jp)
'⑬', '“', '”', '‘', '’', '♂', '♀', '$', ',', '⑧', '/', 'A', 'B', 'C', 'D', 'E', // B
'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', // C
'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', // D
- 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', // E
+ 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '▶', // E
':', 'Ä', 'Ö', 'Ü', 'ä', 'ö', 'ü', // F
// Make the total length 256 so that any byte access is always within the array
@@ -150,7 +150,7 @@ public static byte SetG3Char(char chr, bool jp)
'⋯', '『', '』', '「', '」', '♂', '♀', '$', '.', '⑧', '/', 'A', 'B', 'C', 'D', 'E', // B
'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', // C
'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', // D
- 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', // E
+ 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '▶', // E
':', 'Ä', 'Ö', 'Ü', 'ä', 'ö', 'ü', // F
// Make the total length 256 so that any byte access is always within the array
diff --git a/PKHeX.Core/PKM/Util/Conversion/EntityConverter.cs b/PKHeX.Core/PKM/Util/Conversion/EntityConverter.cs
index 230d0cc36..2d4ae20b7 100644
--- a/PKHeX.Core/PKM/Util/Conversion/EntityConverter.cs
+++ b/PKHeX.Core/PKM/Util/Conversion/EntityConverter.cs
@@ -174,6 +174,7 @@ public static bool IsConvertibleToFormat(PKM pk, int format)
PB7 { Species: (int)Species.Eevee, Form: not 0 } => IncompatibleForm,
PB8 { Species: (int)Species.Spinda } => IncompatibleSpecies, // Incorrect arrangement of spots (PID endianness)
PB8 { Species: (int)Species.Nincada } => IncompatibleSpecies, // Clone paranoia with Shedinja
+ PK9 { Species: (int)Species.Koraidon or (int)Species.Miraidon, FormArgument: not 0 } => IncompatibleForm, // Ride
_ => Success,
};
diff --git a/PKHeX.Core/PKM/Util/EntityFileNamer.cs b/PKHeX.Core/PKM/Util/EntityFileNamer.cs
index 96e65c483..4775def24 100644
--- a/PKHeX.Core/PKM/Util/EntityFileNamer.cs
+++ b/PKHeX.Core/PKM/Util/EntityFileNamer.cs
@@ -17,6 +17,12 @@ public static class EntityFileNamer
/// Input entity to create a file name for.
/// File name for the data
public static string GetName(PKM pk) => Namer.GetName(pk);
+
+ ///
+ /// A list of all available objects.
+ ///
+ /// Used for UI display.
+ public static readonly List> AvailableNamers = [Namer];
}
///
@@ -24,6 +30,8 @@ public static class EntityFileNamer
///
public sealed class DefaultEntityNamer : IFileNamer
{
+ public string Name => "Default";
+
public string GetName(PKM obj)
{
if (obj is GBPKM gb)
@@ -60,6 +68,14 @@ private static string GetGBPKM(GBPKM gb)
/// Type that the implementer can create a file name for.
public interface IFileNamer
{
+ ///
+ /// Human-readable name of the implementation.
+ ///
+ string Name { get; }
+
+ ///
+ /// Gets the file name (without extension) for the input data.
+ ///
string GetName(T obj);
}