Mutagen-Modding / Mutagen

A .NET library for analyzing, creating, and manipulating Bethesda mods
GNU General Public License v3.0
118 stars 31 forks source link

Collision Layer Records rely on the INTV - Interactable Count, Crash if they don't match #402

Open Michael-wigontherun opened 1 year ago

Michael-wigontherun commented 1 year ago

Mod is Some Collision Camera Plugin is "Some Collision Camera.esp" from the "Some Collision Camera - ESL Flagged" version altho it does not matter there is only one record inside of the plugin and its from the "Skyrim.esm" plugin.

It crashes on this line: SkyrimMod mod = SkyrimMod.CreateFromBinary(path, SkyrimRelease.SkyrimSE);

System.AggregateException: One or more errors occurred. (Specified argument was out of the range of valid values.) ---> SubrecordException Some Collision Camera.esp => L_CAMERA (088788:Skyrim.esm) => INTV: Specified argument was out of the range of valid values. System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. at Noggog.BinaryMemoryReadStream.ReadSpan(Int32 amount, Boolean readSafe) in D:\a\CSharpExt\CSharpExt\Noggog.CSharpExt\Streams\Binary\BinaryMemoryReadStream.cs:line 96 at Mutagen.Bethesda.Plugins.Binary.Translations.FormLinkBinaryTranslation.Parse[T](MutagenFrame reader, IFormLinkGetter1& item) at Mutagen.Bethesda.Plugins.Binary.Translations.ListBinaryTranslation1.Parse(MutagenFrame reader, Int32 amount, RecordType triggeringRecord, BinarySubParseDelegate2 transl, Boolean nullIfZero) at Mutagen.Bethesda.Plugins.Binary.Translations.ListBinaryTranslation1.Parse(MutagenFrame reader, RecordType triggeringRecord, RecordType countRecord, Int32 countLengthLength, BinarySubParseDelegate2 transl, Boolean nullIfZero) at Mutagen.Bethesda.Skyrim.CollisionLayerBinaryCreateTranslation.FillBinaryRecordTypes(ICollisionLayerInternal item, MutagenFrame frame, PreviousParse lastParsed, Dictionary2 recordParseCount, RecordType nextRecordType, Int32 contentLength, TypedParseParams translationParams) at Mutagen.Bethesda.Plugins.Binary.Translations.PluginUtilityTranslation.MajorRecordParse[M](M record, MutagenFrame frame, TypedParseParams translationParams, RecordStructFill1 fillStructs, MajorRecordFill1 fillTyped) at Mutagen.Bethesda.Skyrim.SkyrimMod.CreateFromBinary(ModPath path, SkyrimRelease release, GroupMask importMask, StringsReadParameters stringsParam, Boolean parallel, IFileSystem fileSystem) at ESLifyEverything.PluginHandles.HandleMod.HandleSkyrimMod(String pluginName, String customInternalOutputLocation) in C:\Modding\SkyrimSE\ESLifyEverything\ESLifyEverything\PluginHandles\HandleMod.cs:line 33 --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at ESLifyEverything.FormData.CompactedMergeData.MergedPluginFixer() in C:\Modding\SkyrimSE\ESLifyEverything\ESLifyEverything\FormData\CompactedMergeData.cs:line 105 at ESLifyEverything.Program.ImportMergeData() in C:\Modding\SkyrimSE\ESLifyEverything\ESLifyEverything\ProgramSteps.cs:line 346 at ESLifyEverything.Program.ImportModData(String compactedFormsLocation) in C:\Modding\SkyrimSE\ESLifyEverything\ESLifyEverything\ProgramSteps.cs:line 304 at ESLifyEverything.Program.Main(String[] args) in C:\Modding\SkyrimSE\ESLifyEverything\ESLifyEverything\Program.cs:line 117

image

Michael-wigontherun commented 1 year ago

Changing the Interactable Count in the mod to 15 fixes the issue.