Releases: Mutagen-Modding/Mutagen
Releases · Mutagen-Modding/Mutagen
0.47.4
Starfield
- Fix for Race ctor
Oblivion
- Improved parsing malformed Oblivion string lists
General
ModCompaction
andRecordCompactionCompatibilityDetection
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
0.47.1
0.47
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
0.46
- 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
0.45
- 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
Lower FormID Range Fixes
- By default. mods will NOT use lower FormID Ranges
- The
forceUseLowerFormIDRanges
parameter in mod construction allows you to set tonull
for "auto" behavior, checking header versions, ortrue
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 useALowerRangeDisallowedHandlerOption.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