Skip to content

Releases: Mutagen-Modding/Mutagen

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

0.43

20 Mar 08:08
Compare
Choose a tag to compare

General

  • Lowered default NextFormID for certain games/versions (Such as Skyrim headers v1.71)
  • Removed 255 limit on counted lists
  • Improved bootstrapping of passthrough test UI
  • GameConstants now lists:
    • DefaultFormVersion
    • HasEnabledMarkers
    • MyDocumentsString
    • IniName
    • StringsLanguageFormat
  • Creation Club load order logic no longer throws on non esls
  • SubrecordPinFrame.Shift and overflow record detection improvements
  • MajorRecordFrame.TryFindSubrecordAfter and FindEnumerateSubrecordsAfter added
  • Archive APIs expose IFileSystem
  • GetArchiveIniListings returns empty bsa file list if ini missing
  • ChineseSimplified added to Language enum
  • FormKey picker hide entries with no editorID when searching
  • FormKey None concept (-1)
  • InterfaceMappingResult now contains getter/setter type information
  • IGetterTypeMapper added to help retrieve Getter typing information
  • Improvement for lists /w a counter subrecord that is missing
  • Handling of missing Plugins.txt more gracefully
  • Added FormKey alternative parameter for DuplciateInAsNewRecord
  • IKeyworded.HasKeywords overload /w IEnumerable
  • WinningContextOverride naming standardization
  • Ba2Reader upgrades to read Starfield strings and v2 format
  • Improvement for passthrough testing suite to white/blacklist specific groups
  • Fix for NextFormID being set to 1 higher than desired
  • Stream.GetSubrecord(RecordType) convenience function
  • MutagenEncodingProvider.GetEncoding recursion fix
  • Strings lookups were matching with strings from other mods of similar name
  • Fix mismatching length for encodings where the byte count and string length are different
  • Some plain string fields were trimming null characters
  • Missing length override handling in overlay parsing
  • TranslatedString.NumLanguages fixes
  • Fix for reflection UIs not handling meta interfaces
  • Bugfix for Compressed items in Ba2 not getting correct lengths
  • AssetLink default values fixed when nullable

Common Records

  • LightMaster renamed to Light
  • Removed ModHeaderCommonFlag
  • MasterReference's FileSize member made nullable
  • Fix for DialogTopic's defaults being applied to the wrong fields
  • Removed Deleted flag from Static.MajorFlag. It's a common flag
  • PlayerReceivesFavor spelling typo
  • Fix for Weather.NAM4 default values
  • Some Perk exception wording improvements

Fallout4

  • Fo4VR added as a GameRelease
    • Fix for Fo4 Weapon Property ImpactDataSet's value (was just wrong)
    • Made APackageData's ctor public
    • Fix for default FormVersion sometimes not being set on records
    • Global records redone to follow existing patterns
    • GameSetting/Global Group.AddNewFloat and similar extension functions added
    • Fix for aspect interfaces not registering in some cases
  • FilterKeywordChance uses Percent
  • DestructionStageData subobject removed in favor of in-line fields on DestructionStage
  • Cover/CoverTriangleMap records defined
  • WeaponDamageType Amount -> Value
  • Armor StaggerRating swapped to UInt8
  • PlacedNpc/Object ragdoll fields defined
  • RagDollBipedData -> RagdollBipedRotation
  • DialogResponses.Flag updated to latest xEdit definitions
  • Scene.ActorID -> AliasID
  • DialogTopic.Quest made non-nullable
  • PlacedNpc.StartsUnconscious enum value fix
  • Npc.BaseHealth -> CalculatedHealth. BaseActionPoints -> CalculatedActionPoints
  • Water.FogShallowColor typo
  • Furniture.HasContainer added
  • LeveledItem/Npc entry definitions updated to have ChanceNone
  • NavigationMapInfo PreferredMergesFlag removed
  • ActorValueInformation flags adjusted to latest definitions
  • StoryManagerEventNode.Type now an enum
  • ColorRecord major flag defined
  • UnknownObjectModifiction now stores its target type better
  • Weapon marked as IBindableEquipment link interface
  • PlacedNpc/Object marked as IKeywordLinkedReference link interface
  • Fix for Race BipedObject default values

Skyrim

  • Updated Skyrim default header to 1.71
  • LensFlare added to mod object
  • ActorValueMapper.TryGetActorValue from major record to enum
  • Worldspaces/Cell helper methods like AddCell/GetOrAdd(Sub)Block
  • Light.Lens added
  • Scene enum StopQuestOnEnd typo fix
  • Landscape.AlphaLayer defined
  • GetEventDataConditionData Value2 enum item renamed
  • SkyrimVR Ini name fix Skyrim VR -> SkyrimVR

Oblivion

  • PlacedCreate.DistantLodData added
  • Landscape LayerNumber made settable

Starfield

  • All records parsed as a baseline, will get more definition over time

0.43-pr002

20 Mar 07:18
Compare
Choose a tag to compare
0.43-pr002 Pre-release
Pre-release

Improvements

  • Starfield records parsed as a baseline
    • Records will get more definition over time
  • Fo4VR added as a GameRelease
  • Updated Skyrim default header to 1.71
    • Lowered default NextFormID for certain games/versions
  • Removed 255 limit on counted lists
  • Improved bootstrapping of passthrough test UI
  • GameConstants now lists:
    • DefaultFormVersion
    • HasEnabledMarkers
    • MyDocumentsString
    • IniName
    • StringsLanguageFormat
  • Some Perk exception wording improvements
  • Creation Club load order logic no longer throws on non esls
  • SubrecordPinFrame.Shift and overflow record detection improvements
  • MajorRecordFrame.TryFindSubrecordAfter and FindEnumerateSubrecordsAfter added
  • Archive APIs expose IFileSystem
  • GetArchiveIniListings returns empty bsa file list if ini missing
  • ChineseSimplified added to Language enum
  • FormKey picker hide entries with no editorID when searching
  • FormKey None concept (-1)
  • InterfaceMappingResult now contains getter/setter type information
  • IGetterTypeMapper added to help retrieve Getter typing information
  • Improvement for lists /w a counter subrecord that is missing

Fixes

  • SkyrimVR Ini name fix Skyrim VR -> SkyrimVR
  • Fix for NextFormID being set to 1 higher than desired
  • Stream.GetSubrecord(RecordType) convenience function
  • MutagenEncodingProvider.GetEncoding recursion fix
  • Fix for Fo4 Race BipedObject default values
  • Oblivion Landscape LayerNumber made settable
  • Fo4 UnknownObjectModifiction now stores its target type better
  • Fo4 Weapon marked as IBindableEquipment link interface
  • Fo4 PlacedNpc/Object marked as IKeywordLinkedReference link interface
  • Strings lookups were matching with strings from other mods of similar name
  • Fix mismatching length for encodings where the byte count and string length are different
  • Some plain string fields were trimming null characters
  • Missing length override handling in overlay parsing
  • TranslatedString.NumLanguages fixes
  • Fix for reflection UIs not handling meta interfaces
  • Bugfix for Compressed items in Ba2 not getting correct lengths
  • AssetLink default values fixed when nullable
  • Fix for Weather.NAM4 default values

Backwards Incompatible Changes

  • LightMaster renamed to Light
  • Removed ModHeaderCommonFlag
  • MasterReference's FileSize member made nullable
  • Fix for DialogTopic's defaults being applied to the wrong fields
  • Removed Deleted flag from Static.MajorFlag. It's a common flag
  • PlayerReceivesFavor spelling typo

Fo4

  • FilterKeywordChance uses Percent
  • DestructionStageData subobject removed in favor of in-line fields on DestructionStage
  • Cover/CoverTriangleMap records defined
  • WeaponDamageType Amount -> Value
  • Armor StaggerRating swapped to UInt8
  • PlacedNpc/Object ragdoll fields defined
  • RagDollBipedData -> RagdollBipedRotation
  • DialogResponses.Flag updated to latest xEdit definitions
  • Scene.ActorID -> AliasID
  • DialogTopic.Quest made non-nullable
  • PlacedNpc.StartsUnconscious enum value fix
  • Npc.BaseHealth -> CalculatedHealth. BaseActionPoints -> CalculatedActionPoints
  • Water.FogShallowColor typo
  • Furniture.HasContainer added
  • LeveledItem/Npc entry definitions updated to have ChanceNone
  • NavigationMapInfo PreferredMergesFlag removed
  • ActorValueInformation flags adjusted to latest definitions
  • StoryManagerEventNode.Type now an enum
  • ColorRecord major flag defined

Skyrim

  • Landscape.AlphaLayer defined
  • GetEventDataConditionData Value2 enum item renamed

0.43-pr001

09 Sep 05:47
Compare
Choose a tag to compare
0.43-pr001 Pre-release
Pre-release
  • General
    • Handling of missing Plugins.txt more gracefully
    • Added FormKey alternative parameter for DuplciateInAsNewRecord
    • IKeyworded.HasKeywords overload /w IEnumerable
    • WinningContextOverride naming standardization
    • Ba2Reader upgrades to read Starfield strings and v2 format
    • Improvement for passthrough testing suite to white/blacklist specific groups
    • Added lastparsed as parameter for custom partial functions
  • Fallout4
    • Fix for Fo4 Weapon Property ImpactDataSet's value (was just wrong)
    • Made APackageData's ctor public
    • Fix for default FormVersion sometimes not being set on records
    • Global records redone to follow existing patterns
    • GameSetting/Global Group.AddNewFloat and similar extension functions added
    • Fix for aspect interfaces not registering in some cases
  • Skyrim
    • LensFlare added to mod object
    • ActorValueMapper.TryGetActorValue from major record to enum
    • Worldspaces/Cell helper methods like AddCell/GetOrAdd(Sub)Block
    • Light.Lens added
    • Scene enum StopQuestOnEnd typo fix
  • Oblivion
    • PlacedCreate.DistantLodData added
  • Starfield
    • Some basic support
    • Some decoding work done up until, but not including Race

0.42

12 Aug 03:59
Compare
Choose a tag to compare
  • Float rounding error improvements
  • Fix for ModKey not using same fields for Equality as its Hash
  • Fix typo in Aggressive enum
  • AutoFixture systems now sets properties of major records it returns and turns off compression, deleted flags, and FormKey
  • Missing IFileSystem pass into parsing logic
  • Fix for NavigationMeshData.Parent missing default value
  • Fix for LocationTargetRadius.Target missing default value
  • Fix for default values of bytes for fields after break
  • Internal Thread safety fixes
  • Target Net6/7
  • ModInstantiator.Importer returns disposable interface
  • Static Lod handling of overflow bytes internalized
  • GameRelease.ToCategory extension function moved to kernel lib
  • ClimateData swapped to use TimeOnly type
  • More functions exposed on GameLocator
  • Test suite CLI commands
  • Oblivion
    • EDIDLink.Null adjustments
    • Default header version set to 1.0
    • Fix for WeaponType Bow and Staff were swapped
  • AssetLinks
    • AutoFixture systems return AssetLinks
    • AssetLink implicit operator from FilePath
    • Voice Type Asset location fix for null speaker
    • Voice Type Asset add exclusions to dialogue export for no export flag and sound overrides
    • Fix for AssetType extension exposure not including "."
    • Fix for IAssetType interfaces using virtual
    • Remove inheritance from AssetTypes
    • AssetTypeLocator.TryGetAssetType from release + path added
    • GetInferredAssetLinks should return getter only interface
    • RemapAssetLinks implemented
    • EnumerateResolvedAssetLinks requires AssetLinkCache
    • AssetLink equality comparers

0.41.1-pr002

07 Jun 04:56
3310810
Compare
Choose a tag to compare
0.41.1-pr002 Pre-release
Pre-release

Fix for ModKey equality to use the same StringComparison as the Hash

0.41.1-pr001

06 Apr 01:01
426be47
Compare
Choose a tag to compare
0.41.1-pr001 Pre-release
Pre-release
  • Float divisor/multiplier revamp to hopefully be more accurate
  • Boxing improvement for HeaderExport

0.41

05 Apr 00:41
434c45a
Compare
Choose a tag to compare

General
- IFileSystem library updates
- Updated GameFinder library version
- Print string when ModKey.FromName fails to exception
- IGroupMixIns no longer requires IMajorRecordInternal
- Convert FormLinkOrAlias to FormLinkOrIndex to include package data
- FormLinkOrIndex Equality work
- IFormLinkOrIndex no longer implements IFormLink
- IIdentifierLinkCache.ResolveIdentifier with no Try
- Improvements on json parsing IFormLinkGetter on MajorRecord type
- UnmappableFormIDException exception for when exports have a ModKey that cannot be located
- ILinkCache API for getting the Type that a resolution connected with
- AutoFixture ModKey deterministically returns different modkeys
- FormLinkInformation.TryFactory from string
- List overflow exception improvements
- FormKey.ToFilesafeString

Asset Links
- Fix for EnumerateAssetLink extension method generic specifications
- AssetLink absolute file path detection
- Fixes for AssetLink DataRelativePath on linux systems
- FilePath to AssetLink implicit operator defined
- AssetLink.ConvertToDataRelativePath exposed

Autogenerated Settings UI
- Fix for default values not being set on subobjects within lists
- UI layout adjustments for list count and +/- buttons
- Shrink size of enum dictionary tabs to be reasonable
- Fix for missing styling import causing crashes in some circumstances

Skyrim/Fallout4
- AMagicEffectArchetype abstract base class added
- Region refactors to remove RegionDataHeader subobject
- Remove LocationTargetable link interface
- Npc RankPlacements should be signed
- StoryManagerNode.HoursUntilReset fix. Should be divisor
- Return UnknownObjectModification if not DATA subrecord
- Fix for MagicEffect.Archetype null ref errors
- Add Npc to IReferenceableObject

Skyrim
- Skyrim condition structures completely overhauled (bit more to come). Classes generated per condition function, with strongly typed parameters.
- Fixed wrong type for GetIsUsedItemEquipType
- Removed "Scroll" enum entry of CastType. This mistake was brought over by xEdit. There is no setting like this in the CK.
- Add IMagicItem
- Remove unused IEventDataTarget interface
- Renamed UnusedConditions to EventConditions as described in #413
- Fix #418 - IOwner interface being implemented by PlacedNpc instead of Npc
- Fix #420 - Use ILight instead of LightTemplate for LightTemplate
- Fix player controls parameter name
- Add Npc to IExplodeSpawn link interface
- Add addon node and art object to IPlaceableObject link interface
- Skyrim.LensFlare defined
- Skyrim Door shouldn't implement ILocationTargetable
- IsInCriticalStageConditionData first parameter defined to be CriticalStage enum

Oblivion
- DialogItem fixes. TIPC was missing. PreviousTopic renamed to PreviousItem
- RegionDataHeader removed

UI
- Reflection UI FormLink settings writes type if required
- AFormKeyPicker.SelectedType property

0.41-pr006

01 Apr 06:01
a491cb2
Compare
Choose a tag to compare
0.41-pr006 Pre-release
Pre-release
  • FilePath to AssetLink implicit operator defined
  • AutoFixture ModKey deterministically returns different modkeys
  • Npc RankPlacements should be signed
  • StoryManagerNode.HoursUntilReset should be divisor
  • Return UnknownObjectModification if not DATA subrecord