About this mod
OBSE framework for swapping base objects and references, using config files.
- Requirements
- Permissions and credits
- Changelogs
- Donations
(ported from Fallout: New Vegas)
For example configs and various mod integrations check out Base Object Swapper Integrations!
Requirements
xOBSE
MessageLogger
Description (copied from Base Object Swapper NV with minor changes)
OBSE utility plugin that allows mod authors to swap base objects with others, using config files.
This is a port of Base Object Swapper from Skyrim Special Edition.
With this mod, you could...
- assign different model variants to misc objects at random
- replace overused statics with unique variants
- replace vanilla leveled NPCs with custom leveled NPCs
and more!
How To Use
NEW AS OF 1.3.0 - Conditional swaps now support pattern matching for specific cell names (requires MessageLogger)! For example, if you want to swap all of a specific item only in Chorrol, you can use:
[Forms|Chorrol]
Or if you want to swap in all cells except Bravil:
[Forms|-Bravil]
Or if you want to swap items only in Houses and Caves you could do something like:
[Forms|House,Cave]
Don't worry about capitalization as that is accounted for behind the scenes so both "chorrol", "Chorrol", "CHORROL", will all work.
NEW AS OF 1.2.0 - NPCs and Creatures can now be form swapped. HOWEVER, there is a caveat with leveled NPCs/creatures. Because the leveled list is resolved after the usual form swaps in this mod, if you want to replace all mudcrab encounters with Daedra, for example, you would instead need to swap the leveled list for a different one:
[Forms]
;Swaps LL0WaterShallow75 with LL1DaedricBeastOlivionGate100, effectively replacing these mudcrab encounters with Daedra
0x343B0~Oblivion.esm|0xBAA3~Oblivion.esm
Non-leveled actors and creatures work the same as the other examples below.
Distributed records should be written to an ini file in Data/BaseObjectSwapper folder (for example, Data/BaseObjectSwapper/MyMod.ini).
They should follow this general format:
[Forms]
origBaseID|swapBaseID|transformOverrides|chance
origBaseID|swapBaseID,swapBase2ID,swapBase3ID|transformOverrides|chance
[References]
origRefID|swapBaseID|transformOverrides|chance
[Forms|CellFormID,KeywordString,RegionFormID]
origBaseID|swapBaseID|transformOverrides|chance
ID MUST be the object's FormID! The EditorID capabilities require functionality that xOBSE does not currently have
ObjectFormID~ModName.esp
origBase is the base object you're trying to replace (eg. a coffee pot).
origRef is the specific object reference you're trying to replace (eg. a specific coffee pot in Hoover Dam).
swapBase is the replacement object you're replacing it with (eg. a coffee pot with a new model).
Locational replacements
- Location based form swaps
- Requires cell or region editorID
;this swaps all UpperClassRugRectangle01 static objects inside the Tiber Septim Hotel with Potatoes
[Forms|0x2AEEA~Oblivion.esm]
0x1C649~Oblivion.esm|0x3368C~Oblivion.esm
Transform Overrides
- Change the position, rotation and scale of swapped objects
- pos - position
- rot - rotation
- scale - scale
- units must be in floats (20.0)
- (NEW) disable - sets the object to initially disabled (but ONLY if the reference is NOT persistent and does NOT have a EnableStateParent flag. This is to prevent crashes)
- (NEW) model(x) - replaces the specified base object's model; no need to swap to a separate object. Put the path to the nif starting inside the mesh folder inside the parentheses.
- A/R suffixes for setting relative vs absolute transform. For position/rotation
- posR(1.0,5.0,100.0) will set new position relative to reference base position
- posA(300.0,100.0,200.0) will override reference base position
- scale is multiplicative.
- scale randomization is possible
- eg. scale(1.0/2.0) will scale references between 1.0 and 2.0 units
- Leave as NONE if you don't want transform overrides
;swaps Gold misc items to Varla Stones with relative position + random Z position of 50 to 100, and random scale between 1.0 and 1.50.
[Forms]
0xF~Oblivion.esm|0x194~Oblivion.esm|posR(10.0,5.0,50.0/100.0),scale(1.0/1.50)
- It is also possible to directly set a transform override without swapping objects. Requires [Transforms] section
[Transforms]
origBaseID|transformOverrides|chance
origRefID|transformOverrides|chance
[Transforms|CellFormID,KeywordString,RegionFormID]
origBaseID|transformOverrides|chance
- Affects swapped objects
[Transforms]
0x17872~Oblivion.esm|rotR(-90,0,0),scale(2.0) ;ICPalaceTower01
Chance
- Randomly swap between multiple swap objects/percentage chance to not swap at all
- chance (0 - 100)
- Default is 100
- S/R suffixes
- chanceS(50) - fixed random chance (persists across game sessions; object refs will be always swapped or not)
- chanceR(50) - chance is rerolled on each new game session (object ref may or may not be swapped each time you load the game)
- Default is S
[Forms]
;Randomly swaps between Base1, Base2, Base3
Base|Base1,Base2,Base3
;50% chance to swap Quill01 to PaintBrush01
;25% chance to swap Quill01 to PaintBrush02
0x23D63|0x1BBC5|NONE|chanceS(50)
0x23D63|0x1BBC6|NONE|chanceS(25)
;50% chance (rerolls each game session)
0x23D63|0x1BBC5|NONE|chanceR(50)
Examples
[Forms]
;swap Repair Hammers with Apples
0xC~Oblivion.esm|0x3365D~Oblivion.esm
[References]
;swap specific reference (in The Tiber Septim Hotel lobby) with a Welkynd Stone and scale it 100x
0x3ADB0~Oblivion.esm|0x191~Oblivion.esm|scale(100)
[Transforms]
;disables specific reference of RockGreatForest050
0x9451~Oblivion.esm|disable
;sets the gold coin mesh to the paintbrush mesh
0xF~Oblivion.esm|model(clutter\artsupplies\paintbrush01.nif)
Check BaseObjectSwapper.log in Oblivion directory, for more information about the process.
Installation
- Install as normal with a mod manager.
Credits
Source
- xNVSE team
- lStewieAl for some extra REd functions
- powerofthree for both the SKSE and xNVSE versions
- llde from xOBSE for helping me figure out Oblivion internals
- wall_sogb from the xNVSE discord for helping me with FNV internals