Wrye Bash

From the Oblivion ConstructionSet Wiki
Jump to navigation Jump to search
Overview

Bash is a general purpose toolbox for both players and modders. It includes as subfeatures entire feature sets of other tools and has many other features (many of them essential) not found in any other tool. In particular, its Bashed Patch feature, which builds a configurable custom change merging mod drastically advances the practicality of getting different mods to work together.

Screenshots:

Links
For Players

Mod, Savegame, Screenshot Management

  • Launch Oblivion and TESCS (with or without OBSE).
  • Mod, save, screenshot file management. (Rename, duplicate, etc.)
  • Save Profiles: Have different sets of saves for different npcs with different loadlists, etc.
  • Screenshots: View, delete, batch rename, open, etc.
  • Readme Browser: Quickly view readme of currently selected mod.
  • Accurately and quickly managing your load order (correctly sorts ESMs)
  • Locking your load order (so updated mods automatically load in the exact same spot as the old version)
  • Checking your load list for problems (missing mod dependencies)
  • Checking savegames against load list and syncing load list to savegame
  • Archive Invalidation (now supports BSA-alteration method)
  • Replacers (install/remove texture replacement mods -- really any mod, too)

Repair/Edit Stuff

  • Repair animation bug (various animations freezing)
  • Repair hair bug (game ctds when viewing race menu after removing a hair mod)
  • Remove spells from spell list
  • Rename created spells, enchanted items
  • Remove bloating (one use of this reduced a 158 Mb savegame to 2.5 Mb)
  • Import NPC levels into an existing savegame (essential when switching to/from OOO, Frans, etc.)
  • Import PC face from other savegame or any mod (e.g., import any of TNR's faces into game)
  • Change master entry in savegame (to avoid losing items, quest progress, etc. when the name of a mod has changed)

Bashed Patchers

  • Configure and build a custom patch mod to...
  • Merge leveled lists
  • Merge TNR faces over other changes to npcs
  • Merge race eye/hair changes over other changes to races
  • Tweak clothes: Show amulets with robes, zero weight rings and amulets, etc.
For Modders

Note that many of the player features are also usable by modders, or have enhanced utility for modders, or affect what modders need to and/or should do. E.g., the existence of Bash's levelled list merging features means that modders should not feel afraid to add items to leveled lists, since such changes are easily merged into the game by using Bash.

Additional/Enhanced Functions

  • Easy swap between 1.1(1.2) and SI versions of Oblivion.esm.
  • Import faces, object names, pc levels into a mod.
  • Easily generate html readmes using wiki-like syntax.
  • Add a master to a plugin (for mod de-isolation)
  • Easily swap ESM to ESP and vice versa (for mod de-isolation)
  • Change master entry in plugin (for mod de-isolation)
  • Locking your load order (so changes you make don't move the plugin to the end of your load list)
  • Savegame profiles (so you can easily test with only your mod active, then easily switch back to playing with all your mods active)
Programming

You can also use Bash's codebase as library for writing command line functions for various tasks, or add new functions to the Bash GUI. For example, here's a command line (bish.py) function that copies spells from a template npc to all other npcs in an esp.

def npcSpellCopy(fileName=None):
    """Copies spells from template npc to other npcs."""
    init(3)
    loadFactory= bosh.LoadFactory(True,bosh.NPC)
    modInfo = bosh.modInfos[fileName]
    modFile = bosh.ModFile(modInfo,loadFactory)
    modFile.load(True)
    #--Get source spells from template npc
    sourceNpc = modFile.NPC_.getRecord(0x1000CAE) #--Formid of template npc
    sourceSpells = sourceNPC.spells
    #--Loop over other npcs
    for npc in modFile.NPC_.records:
        print npc.eid, npc.full
        npcSpells = npc.spells
        for spell in sourceSpells:
            if spell not in npcSpells:
                npcSpells.append(spell)
                print ' ', spell
    modFile.safeSave()
callables.add(npcSpellCopy)

For more information on programming in Bash, see Bash Programming.

Contact

See Elder Scrolls forums for discussion of Bash and in order to contact Wrye.