Skip to content

Releases: Mutagen-Modding/Mutagen

0.47.4

06 Nov 09:40
Compare
Choose a tag to compare

Starfield

  • Fix for Race ctor

Oblivion

  • Improved parsing malformed Oblivion string lists

General

  • ModCompaction and RecordCompactionCompatibilityDetection functionality
  • OverrideMixIn usage of IMajorRecordQueryable, opening up more usage for WinningOverride calls
  • Upgraded error message to Race NAME parsing
  • ModToGenericCallHelper.InvokeFromCategory
  • MajorRecordTypeEnumerator.GetTopLevelMajorRecordTypesFor (thanks @some1one)
  • Internal fix for array related access in certain conditions
  • Fix for internal warmup logic for certain calls
  • Added more overrides for ListsMod/AssertListsMod
  • Some MultiModFileSplitter initial experiments (thanks @praecipitator)
  • RecordException.Enrich that takes ModContexts

0.47.2

10 Oct 04:16
Compare
Choose a tag to compare
  • Disable CCC load order mechanics for Starfield
  • Added SFBGS Starfield masters to implicit
  • KeyedMasterStyleReader. Fix for LoadOrderImporter for Starfield
  • Starfield Planet EOVR subrecord
  • RecordCompactionCompatibilityDetector.CouldBeSmallMasterCompatible

0.47.1

06 Oct 03:07
Compare
Choose a tag to compare
  • Starfield Location component support

0.47

04 Oct 22:23
Compare
Choose a tag to compare

Common

  • IMajorRecordIdentifier naming modified /w Getter suffix

Starfield

  • Added ShatteredSpace.esm to implicit base masters

Updated Records

  • PlacedObject
    • XWCN/XWCU/XCZR/XLIB added
    • PlacedObjectGoboAnimatedProperties subobject defined
    • LightColors list made additive
  • AffinityEvent PNAM
  • Components added to Race
  • Weapon XALG
  • Package unknown target upgraded to handle more scenarios
  • ImpactDataSet IPDS/ENAM
  • BGSOverlayDesignatedPlacementInfo_Component added
  • Location NAM1
  • PlanetBiome field renames and Keywords defined
  • ActorValueModulation AVMP
  • AimModel extra byte added
  • Quest ATLM made into list
  • SceneCollection GRUP added

Testing

  • DataRelativePathBuilder

Fixes

  • Fix for null refs on certain FormLink accessors on older record versions
  • Fix for overlay handling of "ending" record markers for certain situations

0.46.1

27 Sep 04:21
Compare
Choose a tag to compare
  • IMajorRecordIdentifier + records + equality comparer
  • Added extra int list size overflow check
  • Starfield BGSVehicleConfig component parsed
  • StringsLookupOverlay AssociatedPath member

0.46

21 Sep 06:01
Compare
Choose a tag to compare
  • Update to .NET 8. Older versions removed
  • Migrate from DotNetZip to System.IO.Compression
  • FormKeys can now have a zero ID and be considered not null #546
    • Minimum ID for lower formID ranges swapped from 1 -> 0
    • FormKey.ToFilesafeString updated to always print ID
  • Fix for ChanceNone scaling #548
  • Added some style enforcement via .editorconfig

Archive

  • Archive.GetApplicableArchivePaths /w IEnumerable<ModKey> ordering
  • Environment variable fixes for linux lookups

AssetLinks

  • AssetLink.RawPath -> GivenPath
  • IAssetProvider which provides a lookup and caching functionality similar to LinkCache, but for asset data
  • IFontProvider foundational implementations
  • Fixes for EnumerateAssetLinks for deep nested assets

LoadOrder

  • Where transform call
  • ResolveExistingMods fix

Write/Create Builders

  • Many internal improvements
  • WithLoadOrderFromHeaderMasters
  • WithDefaultLoadOrder
  • Some input parameters made nullable
  • WithExtraIncludedMasters #543
  • WithExplicitOverridingMasterList
  • GameRelease requirement added to BinaryWriteBuilder
  • WithAllParentMasters #542
  • Added some overloads /w param array inputs, and other similar convenience overloads
  • BinaryWriteParameters.MastersContentCustomOverride custom func to transform masters to be written
  • Read/Write parameter objects LoadOrder member renamed to MasterFlagsLookup, and now take IModMasterStyled
  • WithKnownMasters to supply master style lookup without having the master files on hand
  • BinaryWriteBuilder order of operations changed to take ToPath first
  • Improved strong typing of builders given by mod objects
  • WithDataFolder can be called, even if not explicitly needed

WPF Controls

  • Fix for enumerable numeric reflection list default values

Starfield

  • No longer assumes master mods are Full style if they cannot be looked up, and will throw instead
  • StarfieldAnimationTextAssetType BaseFolder fixed
  • PlacedNpc.Location field
  • Light record definitions updated heavily
  • TerminalMenu data work, length fixes, nullability improvements
  • SkeletalModel fields names improved
  • PERS, PCBN, PCCN records
  • Traversal binary overlay fix
  • Navmesh geometry parsing readded
  • BGSVehicleManagement support
  • PlacedObject XLTW, XPWR subrecords defined

Fallout4

  • Deleted LeveledSpell
  • Race movement data versioning parse improvements
  • TalkingActivator.LoopingSound record type fix
  • LocationCellStaticReferences marked for overflow support

Skyrim

  • TalkingActivator.LoopingSound record type fix

Oblivion

  • Fix for parsing of list of string fields #549

Misc

  • IModMasterStyled defined
  • Implementation of ModInstantiator for disposable getters
  • DataRelativePath struct to help standardize paths to the data folder
  • ModHeaderFrame.FromStream should not dispose
  • IHaveVirtualMachineAdapter aspect interface setters, implement major record
  • MasterStyle enum moved to Kernel
  • Improvements for Record Count exporting #544
  • Script entries throw if they're short circuiting due to no name, but have properties
  • Improved break handling for byte arrays
  • Improved printing of UnmappableFormIDException
  • Few remaining Light -> Small renames
  • RecordCollisionException improved to print ModKey involved
  • Fix for DeepCopy not setting ModKey when copying a mod object

0.45.1

06 Aug 07:00
Compare
Choose a tag to compare
  • Fixes for duplicate masters in mod headers after Starfield master system update
  • Fix for BinaryWriteBuilder misusing given load order

0.45

22 Jul 03:53
Compare
Choose a tag to compare
  • Create and Write builder mechanics added (docs pending)
  • Added some more TryResolve overloads to better consume target type (#519)
  • GameCategory.ToModRegistration moved to Core
  • Added Remove /w IFormLinkIdentifier overloads
  • ParsingBundle now requires ModKey
  • Optional parameter during parsing to throw when unknown subrecords are encountered
  • ModInstantiator.ImportGetter/ImportSetter
  • RecordCompactionCompatibilityDetector to help assess if mods can be Small/Medium masters
  • AssociatedFilesLocator, which helps find associated strings/archive files of specific plugins
  • ModFilesMover. Call which will move/copy a mod, and replace all associated files when moving a plugin, such as strings/archives.
  • GameConstants now list:
  • DefaultModHeaderVersion
  • DefaultHighRangeFormID
  • UseLowerRangeFormIDVersion
  • SeparateMasterLoadOrders
  • IMod now contains:
  • IsMaster
  • CanBeSmallMaster
  • IsSmallMaster
  • CanBeMediumMaster
  • IsMediumMaster
  • IModFlags added to expose just flag variables of IMod
  • IReadOnlyMasterReferenceCollection.GetFormID removed. TryGetIndex added.
  • MagicEffectArchetype's AssociationKey swapped from FormKey type to IFormLinkIdentifier
  • Binary[Write/Read]Parameters and StringsReadParameters made readonly record
  • SeparateMasterPackage introduced. Supports Starfield style separated master concepts, unlike MasterReferenceCollection
  • ToFormLinkInformation no longer marked obsolete
  • FormID.ModIndex removed. Other refactors related to Small/Medium master support
  • Disabled Form Key UI Pickers ability to lookup via FormID. Needs to be reimplemented with Starfield concepts
  • Group.AddReturn record convenience call
  • Some Overridden Forms support work (currently still disabled)
  • Improvements for handling unknown conditions
  • MutagenEncodingProvider override constructor
  • Added missing RecordCollisionException in certain group parsing logic
  • ModListing scope loosened to IModKeyed
  • Removed BinaryWriteParameters.MasterFlag desync functionality (Mod flags often disagree with their file suffix)
  • ResolveAllModsExist on ModListing enumerables
  • ModHeaderFrame improvements
  • FromPath/FromStream ctors
  • MasterStyle member
  • LoadOrder.Import now sets load order on mods being imported

Archives

  • Ba2 version 8 support
  • Archive.GetApplicableArchivePaths improvement for when ini is missing
  • Version uint exposed in Ba2Reader

Fallout4

  • Ba2 version 8 support
  • Race MLSI made into a normal MorphValuesLastIndex field

Skyrim

  • Skyrim Quest NextAliasID swapped to be a normal field instead of a logic heavy derivative field

Starfield

  • Utilizes new separated load order master concepts to better export indices when referencing small/medium masters
  • Record definition updates/fixes
  • Registered implicit mods

0.44

12 Apr 02:01
Compare
Choose a tag to compare

Lower FormID Range Fixes

  • By default. mods will NOT use lower FormID Ranges
  • The forceUseLowerFormIDRanges parameter in mod construction allows you to set to null for "auto" behavior, checking header versions, or true to always use the new ranges (in the case of SKSE allowing usage artificially)
  • Optional headerVersion in mod ctors, allowing specification of header version at the time of construction
  • Extra protections added during mod writing that will throw if lower FormID ranges are used without a listed master. This is a not allowed situation that causes errors.
  • BinaryWriteParameters updates
  • LowerRangeDisallowedHandler lets you control what should happen in the above scenario. By default it throws, but you can use ALowerRangeDisallowedHandlerOption.AddPlaceholder() to specify a fallback ModKey or load order to look to for a fallback. In this case, it will add an "unnecessary" master if you are using lower range FormIDs w/o a master, which will sidestep the issue.
  • MinimumFormID lets you control what the minimum allowed FormID before it is considered "lower range"
  • IModHeaderCommon.MinimumCustomFormID removed, and replaced with IModGetter.MinimumCustomFormID(bool? forceUseLowerFormIDRanges)
  • LoadOrder.CreateReadonly

Other Fixes - Thanks Elscrux!

  • Fix for Skyrim water flags
  • Book TeachesNothing raw content default swapped to max int value
  • MajorRecordTypeEnumerator.GetMajorRecorTypesFor(GameCategory) functionality added
  • AssetLink equality improvements to look at DataRelativePath instead of RawPath

0.43.3

28 Mar 10:01
Compare
Choose a tag to compare
  • Fix for DialogTopic info list being a derivative list, when it should be manual
  • Starfield MusicTrack.MSTF defined
  • Starfield FXPD record defined