diff --git a/Penumbra/Collections/Cache/ImcCache.cs b/Penumbra/Collections/Cache/ImcCache.cs
index c6bb0330..786463bc 100644
--- a/Penumbra/Collections/Cache/ImcCache.cs
+++ b/Penumbra/Collections/Cache/ImcCache.cs
@@ -68,6 +68,7 @@ public sealed class ImcCache(MetaFileManager manager, ModCollection collection)
protected override void ApplyModInternal(ImcIdentifier identifier, ImcEntry entry)
{
+ ++Collection.ImcChangeCounter;
if (Manager.CharacterUtility.Ready)
ApplyFile(identifier, entry);
}
@@ -102,6 +103,7 @@ public sealed class ImcCache(MetaFileManager manager, ModCollection collection)
protected override void RevertModInternal(ImcIdentifier identifier)
{
+ ++Collection.ImcChangeCounter;
var path = identifier.GamePath();
if (!_imcFiles.TryGetValue(path, out var pair))
return;
diff --git a/Penumbra/Collections/ModCollection.cs b/Penumbra/Collections/ModCollection.cs
index 9286d459..eb5ab46a 100644
--- a/Penumbra/Collections/ModCollection.cs
+++ b/Penumbra/Collections/ModCollection.cs
@@ -56,6 +56,8 @@ public partial class ModCollection
///
public int ChangeCounter { get; private set; }
+ public uint ImcChangeCounter { get; set; }
+
/// Increment the number of changes in the effective file list.
public int IncrementCounter()
=> ++ChangeCounter;
diff --git a/Penumbra/Interop/PathResolving/PathDataHandler.cs b/Penumbra/Interop/PathResolving/PathDataHandler.cs
index 5627e015..a8be97c8 100644
--- a/Penumbra/Interop/PathResolving/PathDataHandler.cs
+++ b/Penumbra/Interop/PathResolving/PathDataHandler.cs
@@ -32,7 +32,7 @@ public static class PathDataHandler
/// Create the encoding path for an IMC file.
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static FullPath CreateImc(ByteString path, ModCollection collection)
- => CreateBase(path, collection);
+ => new($"|{collection.LocalId.Id}_{collection.ImcChangeCounter}_{DiscriminatorString}|{path}");
/// Create the encoding path for a TMB file.
[MethodImpl(MethodImplOptions.AggressiveInlining)]