diff --git a/MareSynchronos/Interop/Ipc/IpcCallerPetNames.cs b/MareSynchronos/Interop/Ipc/IpcCallerPetNames.cs index 5954c37..a662178 100644 --- a/MareSynchronos/Interop/Ipc/IpcCallerPetNames.cs +++ b/MareSynchronos/Interop/Ipc/IpcCallerPetNames.cs @@ -68,6 +68,7 @@ public sealed class IpcCallerPetNames : IIpcCaller private void OnPetNicknamesReady() { CheckAPI(); + _mareMediator.Publish(new PetNamesReadyMessage()); } private void OnPetNicknamesDispose() diff --git a/MareSynchronos/PlayerData/Handlers/PairHandler.cs b/MareSynchronos/PlayerData/Handlers/PairHandler.cs index 5ef92d7..8e2a9cb 100644 --- a/MareSynchronos/PlayerData/Handlers/PairHandler.cs +++ b/MareSynchronos/PlayerData/Handlers/PairHandler.cs @@ -564,6 +564,13 @@ public sealed class PairHandler : DisposableMediatorSubscriberBase await _ipcManager.Honorific.SetTitleAsync(PlayerCharacter, _cachedData.HonorificData).ConfigureAwait(false); }); + Mediator.Subscribe(this, async (_) => + { + if (string.IsNullOrEmpty(_cachedData?.PetNamesData)) return; + Logger.LogTrace("Reapplying Pet Names data for {this}", this); + await _ipcManager.PetNames.SetPlayerData(PlayerCharacter, _cachedData.PetNamesData).ConfigureAwait(false); + }); + _ipcManager.Penumbra.AssignTemporaryCollectionAsync(Logger, _penumbraCollection, _charaHandler.GetGameObject()!.ObjectIndex).GetAwaiter().GetResult(); } diff --git a/MareSynchronos/Services/Mediator/Messages.cs b/MareSynchronos/Services/Mediator/Messages.cs index 340a268..e6a9a89 100644 --- a/MareSynchronos/Services/Mediator/Messages.cs +++ b/MareSynchronos/Services/Mediator/Messages.cs @@ -41,6 +41,7 @@ public record PenumbraResourceLoadMessage(IntPtr GameObject, string GamePath, st public record CustomizePlusMessage(nint? Address) : MessageBase; public record HonorificMessage(string NewHonorificTitle) : MessageBase; public record MoodlesMessage(IntPtr Address) : MessageBase; +public record PetNamesReadyMessage : MessageBase; public record PetNamesMessage(string PetNicknamesData) : MessageBase; public record HonorificReadyMessage : MessageBase; public record PlayerChangedMessage(CharacterData Data) : MessageBase;