diff --git a/Dalamud/Game/Gui/NamePlate/NamePlateUpdateHandler.cs b/Dalamud/Game/Gui/NamePlate/NamePlateUpdateHandler.cs index 94f185966..4f16ab660 100644 --- a/Dalamud/Game/Gui/NamePlate/NamePlateUpdateHandler.cs +++ b/Dalamud/Game/Gui/NamePlate/NamePlateUpdateHandler.cs @@ -328,9 +328,22 @@ internal unsafe class NamePlateUpdateHandler : INamePlateUpdateHandler public ulong GameObjectId => this.gameObjectId ??= this.NamePlateInfo->ObjectId; /// - public IGameObject? GameObject => this.gameObject ??= this.context.ObjectTable[ - this.context.Ui3DModule->NamePlateObjectInfoPointers[this.ArrayIndex] - .Value->GameObject->ObjectIndex]; + public IGameObject? GameObject + { + get + { + if (this.GameObjectId == 0xE0000000) + { + // Skipping Ui3DModule lookup for invalid nameplate (NamePlateInfo->ObjectId is 0xE0000000). This + // prevents crashes around certain Doman Reconstruction cutscenes. + return null; + } + + return this.gameObject ??= this.context.ObjectTable[ + this.context.Ui3DModule->NamePlateObjectInfoPointers[this.ArrayIndex] + .Value->GameObject->ObjectIndex]; + } + } /// public IBattleChara? BattleChara => this.GameObject as IBattleChara;