Skip to content

lunivore/chimmer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 

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

Watchers

Forks

Packages

No packages published

Languages