Unfortunately, I'm only one who knows it that well, I'm too busy to write custom scripts for folks. So instead, I'm going to give a brief primer on what's possible. This will most likely sink into the sands of Oblivion, but here it is...
Overview
While Bash is well known as an end user tool for manipulating mod and save files in various ways, it can also be useful for repetitive modding tasks -- if you don't mind doing a little python programming and working from the command line. When developing my Rational Names mod, I used it quite a bit to write short little functions to do a lot of the work for me. Since I've been asked about using Bash to copy spells to a bunch of new NPCs, I thought that I'd explain how to do this a little bit.
I'll start off with a nice simple program. After that, I'll scare the pants off you with horrible details that will make you love the construction set.
Sample Program
Here's a brief program that you can add to bish.py and run from the command line to print out the formids of all spells of all npcs in a given mod (I actually haven't tested this, but it should work):
def npcTweak(fileName=None): """Tweak npcs in misc. ways.""" init(3) loadFactory= bosh.LoadFactory(True,bosh.NPC) modInfo = bosh.modInfos[fileName] modFile = bosh.ModFile(modInfo,loadFactory) modFile.load(True) for npc in modFile.NPC_.records: print npc.eid, npc.full for spell in npc.spells: print ' ', spell modFile.safeSave()callables.add(npcTweak)
Once you've added that to bish.py, open the Windows command line tool, chdir to the mopy directory, and run it like so: bish npcTweak Oblivion.esm
Wasn't that easy? Now onto scary details...
Possibilities
* Change object names in a systematic way.
* Tweak npcs in just about any way you want (change faction, spells, race, face data, etc.)
* Tweak leveled lists in any way.
* Tweak/access string type properties (editor id, full name, model, icon) of most objects.
Difficulties
* You need to be able to program to some degree in python. Python is a great programming language, but it is programming. If you don't know at least a little about programming, this is not for you.
* bosh.py has 4300 lines of code. Granted, you don't have to understand all of it, but it's not nothing.
* Mod files are fairly complex, with a fair amount of cruft in them. Bash hides a fair amount of that mess from you, but it makes code more obscure to understand.
* Bash is pretty well documented, but I'm the only one who has used it so far, so I'm sure there's still plenty of obscurity.
* Bash uses some advanced python techniques in places. These can be obscure to people unfamiliar with the language. E.g. "[x for x in (1,2,3,4,5) if x % 2]" produces "[1,3,5]". If you're not familiar with advanced python, you probably just said "Huh?"
* Bash code is built to skip over most data in mod files. It actually only has a deep understanding of a few types of records (NPCs, leveled lists, Books). More types can be added with moderate ease, but you need to understand the records for that type of data (and apparently, modfiles have a moderate amount of cruft in them -- Oblivion seems to have changed record the record file formats as it developed. And sometimes the seem to have added stuff and then not used it.)
* Bash does not understand structured content (Dialogue and World Cell blocks) at all. Adding support for that would require a fair amount of work. (The problem here is that these types of records are combined in complex block structures which have to be handled correctly.)
Bash Files
Bash's python code comes in a few modules...
* bush.py: Definines miscelleaneous chunks of data. Don't worry about this.
* bosh.py: The "library" does most of heavy lifting of application. No GUI code.
* bish.py: A miscellaneous collection of command line programs/functions.
* basher.py: Almost all of the GUI code. 99% of Bash application is defined here.
* bash.py: A thin wrapper around basher.py. Basically takes stuff defined in basher.py and presses "Start".
Getting Started...
Hello, hello? Okay, I've scared the non-programmers away, but I think there's a few of you left... Anyway, to get started:
* copy bish.py to mybish.py (Don't want next Bash release to overwrite your code!)
* Mess around. Try not to break Oblivion.esm.
More hints:
* Get a decent, code understanding text editor. I use EditPlus, but there are tons of them around. In fact in a pinch, you can use Notepad.
* Have your python docs ready. Note that bash code is fairly documented with doc strings. There are also tools which will read python modules and spit out the docs for them in html format. Might be useful.
Wanted: Bash Coding Experts?
There's a lot of batch stuff that I can do very rapidly, but I'm not going to do it for everyone. I think that large projects might find that ability useful, so having a couple of extra people knowing it well enough to knock little functions out would be good. More hands/eyes would probably also mean that Bash's understanding of Mod file structure would be improved, which would be useful for everyone.