Static Switching System (SSS) is a declarative world-patching framework for OpenMW. Write YAML modules to replace meshes globally or in specific places, or to target live objects with conditions and apply object, inventory, actor, world-state, and scripting actions.

Static Switching System logo

SSS has two module types: static and instance. Pick one.

  • Static modules replace meshes and maintain tracked replacement chains. They are the original Static Switching System path.
  • Instance modules match active objects with conditions and apply rules such as replacement, transforms, inventory changes, actor equipment, locks, traps, creation, teleportation, tags, and other supported actions.

A YAML file must not combine instances with static replacement fields. When an object matches an instance rule, that pipeline owns the activation; static replacement is the fallback for objects with no matching instance rules.

Dependencies and optional integrations

SSS depends on H3lp Yours3lf, so install and enable H3lp Yours3lf before testing SSS.

FlexTag is optional. It is required only by the tag feature family: has_tag and cell_tag conditions, plus add_tag and remove_tag actions. Without FlexTag's FlexTagG interface, those conditions return false and those actions cannot perform their operation, so a module that depends on them will appear inactive. SSS's static pipeline and its other instance conditions and actions do not require FlexTag. In particular, cell_match is an SSS location condition, not a FlexTag condition. See FlexTag compatibility for tag data and persistence details.

Mods already using SSS

SSS is already doing useful work in released static modules, not just in sample files:

All nine are static modules. See Static Modules in the Wild for the full catalog and the authoring patterns they illustrate.

Start here: a five-minute test

  1. Install SSS and H3lp Yours3lf, enable H3lp Yours3lf.esp, and then enable Static Switching System.esp. Install FlexTag only if your module uses has_tag, cell_tag, add_tag, or remove_tag.

  2. Create a YAML file below scripts/staticSwitcher/data/ in an active OpenMW data directory:

    log_name: SSS First Test
    instances:
      - conditions:
          - object_type: Creature
          - record_id: "^rat$"
        once: true
        actions:
          - transform:
              scale: 1.25
  3. Load a cell containing a rat. The rat should become 25% larger; once: true keeps the successful application from being rolled again for that object after save/load.

  4. If nothing happens, enable debug logging and check troubleshooting.

This test uses no replacement asset and is a quick way to verify the plugin, dependency, VFS path, module discovery, condition matching, and instance processing. Continue with Your First Module for a fuller static-and-instance walkthrough.

Choose a path

GoalStart here
Verify that SSS is installedFive-minute test
Read the full documentationSSS documentation
Replace meshes globally or by locationBasic static replacement
Change active objects based on conditionsYour First Module
Add inventory, locks, traps, or equipmentLoot, locks, and traps
Use quests or world stateQuest-state world patching
Study strange multi-primitive combinationsExperiments and Oddities
Inspect or debug a loaded installationValidation and Debugging