Starfield Mod:Mod File Format/PERK

OMOD records hold information about Object Modifiers. These include things like armor/weapon mods.


 * EDID - String EditorId
 * DATA - Custom structure (variable sized)

dword     includeCount dword     propertyCount word      unknown1 dword     nameLength                                  // Includes the terminating NUL character byte      name[nameLength] word      unknown2 dword     attachPointFormId dword     attachParentSlotCount dword     attachParentSlots[attachParentSlotCount]    // Array of formids dword     unknown3 include_t includes[includeCount]                      // See below for structure definition property_t properties[propertyCount]                  // See below for structure definition
 * Minimum length of this structure appears to be 34 bytes. Maximum length found in Starfield.esm is 511 bytes.
 * FULL - LString FullName
 * DESC - LString Description
 * MODL - String ModelFilename (optional)
 * FLLD - Dword Unknown (always 1?)
 * NAM1 - Byte Priority
 * XFLG - Byte Unknown (usually not included, 5 records have a value of 2)

Include Data Definition
This is a fixed size structure of 7 bytes used in the DATA subrecord. dword modFormId byte minLevel byte optional byte notUseAll    //Boolean

Property Data Definition
This is a fixed size structure of 24 bytes used in the DATA subrecord: dword valueType       // See below for possible values dword valueFunction   // See below for possible values byte propertyName[4]  // See below for possible values dword value1          // Usually a dword, sometimes a float float value2          // Usually a float, sometimes a dword float step

ValueType
The property valueType has one of 6 possible values which affect how the value1/value2 values should be used:
 * 0 -- Dword Dword
 * 1 -- Float Float
 * 2 -- Bool  Bool  (values are dwords)
 * 4 -- FormId Dword
 * 5 -- ENUM  Unused (both dwords)
 * 6 -- FormId Float

FunctionType
The property functionType has one of 3 possible values which determines how the property modifier acts on the value:
 * 0 -- Set (set value)
 * 1 -- Add (add to value)
 * 2 -- Mul+Add (multiply and add?)

PropertyName
propertyName is a 4 byte string which describes the type of modifer. Usually the first character indicates the record type modified and the 3 following the type of modification: AA01 AA02 AACT ACPT ADMG AENC     Armor Enchantment AKEY     Armor Keyword ARAT     Armor Rating AVAL     Armor Value AWGT FBDS FBUR FHDT FLMS FORF     Weapon Override Rate of Fire FREP FTYP GVAL     Weapon Value GWEI     Weapon Weight NACV     NPC Actor Value NAID NARO NCST NENC NFAC     NPC Faction NGFA NINV     NPC Inventory NKEY     NPC Keyword NMMX NMSL     NPC Layered Material Swap NPRK     NPC Perk NRCE     NPC Race NREA NSKN     NPC Skin NSPL NXPO SDMG SPAV WABS WACV     Weapon Actor Value WADL WAIM WAOS WCDM WCIM WCO1 WCO2 WCO3 WCO4 WCO5 WCO6 WDMG WDTV WEMT WENC WIMP WKEY     Weapon Keyword WMNR WMXR WNPR WOPR WRC1 WRC2 WRC5 WRSP WSCP WSDM WSLV     Weapon Stealth Level WSPD WSPS WSTS WTMC ZDTA ZFOV