Skip to content

Latest commit

 

History

33 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chimmer

Chimmer lets you change your mods easily! It will:

  • load a list of mods
  • in the order you specify (via a list, a multi-line string, or a file like plugins.txt)
  • using your Steam Skyrim directory and plugins.txt as a default
  • filtered if you want to
  • including compressed records like NPCs
  • allowing you to merge mods into one
  • and programmatically manipulate a mod
  • and create new records
  • allowing new records to reference other new records with an editorId
  • or mark records as deleted
  • retaining consistency with previous patch runs via a consistency file a la SkyProc
  • while keeping it all in sync with any changes to the master list
  • including any FormIds used internally to records
  • and save it to a new mod.

It is technically:

  • written in Kotlin
  • using data classes based on Bethesda's Group / Record / Subrecord format
  • with nice wrappers round them that are more readable
  • while keeping the binary format behind the covers
  • so that the information doesn't diverge
  • allowing you to save it all
  • with sensible default settings.

To load and save mods:

val chimmer = Chimmer(File("MyOutputFolder"), listOf("Skyrim.esm", "Dawnguard.esm"))
val mods = chimmer.load(modFolder, pluginsList, filters)

To create new mods, ensuring consistency with any previous patch run:

val chimmer = Chimmer(File("MyOutputFolder"), File("plugins.txt"))
val mod1 = chimmer.createMod("Chimmer1.esp")
val mod2 = chimmer.createMod("Chimmer2.esp")
chimmer.save(mod1)
chimmer.save(mod2)

To manipulate the mod records:

val mySword = mod.weapons.filter { it.name = "Iron Sword" }.withDamage ({ it.damage * 6 })
val otherWeapons = mod.weapons.map { it.withDamage({ it.damage * 3 }) }
val newMod = mod.withWeapons( { otherWeapons + listOf(mySword) } )

To handle something that Chimmer doesn't:

  • Write a wrapper for a new grup (like the SLGM Soul Gem grup), or
  • Write an extension method for an existing wrapper (like the SNAM / equipping sound that WEAP / Weapon makes), or
  • Extend RecordWrapper yourself, or
  • Add an issue to this repository asking me nicely to do it (I may say no), or
  • Make a fork of this project and do it yourself.

About

A library for manipulating Skyrim mod files

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages