Skip to content
S3LightFixes
reference

lightconfig.toml

Every setting in lightconfig.toml, its default and its command-line option, where the file lives, and when S3LightFixes writes it.

lightconfig.toml holds the settings S3LightFixes runs with. It lives in the same folder as your user openmw.cfg, the one the log's config line names, and is found there whatever its capitalization, so lightConfig.toml works too.

When it is written§

  • The first run writes it when there is none, with every setting that run used.
  • Every run writes it when it says save_config = true.
  • One run writes it with -U, --update-light-config.

A dry run or a --validate-config run never writes it. When it is written, it holds the settings the run actually used: the file's values, with any given on the command line in their place and the command line's patterns added to its lists. The S3L_NO_NOTIFICATIONS and S3L_DEBUG environment variables are not saved, but -n and -d are.

Written after a first run on Morrowind with both expansions, it reads:

disable_interior_sun = false
disable_flickering = true
disable_pulse = false
disable_negative_lights = true
auto_enable = false
no_notifications = false
debug = false
dry_run = false
validate_config = false
standard_hue = 0.62
standard_saturation = 0.8
standard_value = 0.57
standard_radius = 1.2
colored_hue = 1.0
colored_saturation = 0.9
colored_value = 0.7
colored_radius = 1.1
duration_mult = 2.5
excluded_plugins = [
    "deleted_groundcover.omwaddon",
    "Clean_Argonian Full Helms Lore Integrated.ESP",
    "Baldurwind.omwaddon",
    "Crassified Navigation.omwaddon",
    "LuaMultiMark.omwaddon",
    "S3maphore.esp",
    "Toolgun.omwaddon",
]
excluded_ids = []
output_dir = "/home/you/.local/share/openmw/data"
save_config = false

[light_overrides]

[ambient_overrides]

Every key is optional: one left out takes its default. A file that is not valid TOML, or holds a value of the wrong type, stops the run with a message and exit code 1.

Unknown keys§

A run ignores a key the program does not know, usually a misspelled one, and says so on standard error. --validate-config fails on it instead, with exit code 1, so a check never passes a setting that does nothing. Both name the key in full: a top-level setting written below an override's [table] header, which TOML puts inside that table, shows up as light_overrides."^torch$".standard_hue. Keep settings above the override tables. Saving the file writes only the keys the program knows, so it drops unknown ones.

save_log and auto_install, which older versions wrote, are not unknown: they do nothing, and --validate-config says they can be deleted and passes. The log is written on every run, and auto_enable replaced auto_install.

Settings§

Lights§

KeyDefaultOptionDoes
disable_flickeringtrue-f, --no-flickerRemove FLICKER and FLICKER_SLOW from every light
disable_pulsefalse-p, --no-pulseRemove PULSE and PULSE_SLOW from every light
disable_negative_lightstrue--disable-negative-lightsTurn every negative light off: no flag, radius 0, black
standard_hue0.62--standard-hueHue multiplier for standard lights, hue 14° to 64°
standard_saturation0.8-s, --standard-saturationSaturation multiplier for standard lights
standard_value0.57-v, --standard-valueBrightness multiplier for standard lights
standard_radius1.2-r, --standard-radiusRadius multiplier for standard lights
colored_hue1.0-H, --colored-hueHue multiplier for every other light
colored_saturation0.9-S, --colored-saturationSaturation multiplier for every other light
colored_value0.7--colored-valueBrightness multiplier for every other light
colored_radius1.1-R, --colored-radiusRadius multiplier for every other light
duration_mult2.5-M, --duration-multDuration multiplier for every light that is not infinite

What a run changes has the arithmetic. standard_radius was once 2.0, which suited only vtastek's shaders; Modding-OpenMW.com's lists use 1.2, the default now.

Cells§

KeyDefaultOptionDoes
disable_interior_sunfalse-7, --classicMake every interior cell's sunlight black. Only for vtastek's shaders for OpenMW 0.47

--classic sets it for one run. A run that writes the file saves it, and from then on every run is a classic one until you set it back to false.

What to leave alone§

KeyDefaultOptionDoes
excluded_ids[]-x, --excluded-idsPatterns for light and interior cell ids to leave out of the plugin
excluded_pluginsseven plugins-X, --excluded-pluginsPatterns for plugin file names not to read

The command-line options add to these lists; they do not replace them. Overrides and exclusions explains both.

Excluded plugins§

The default excluded_plugins names plugins the reader cannot parse: deleted_groundcover.omwaddon has a moved reference it cannot resolve, Clean_Argonian Full Helms Lore Integrated.ESP has an FLTV field in a cell, and Baldurwind.omwaddon, Crassified Navigation.omwaddon, LuaMultiMark.omwaddon, S3maphore.esp and Toolgun.omwaddon have LUAL records. Setting the key replaces the list.

Overrides§

TableOptionHolds
[light_overrides."<pattern>"]--lightColor, radius, duration and flags for the lights the pattern matches
[ambient_overrides."<pattern>"]--ambientAmbient, sunlight and fog for the interior cells the pattern matches

Overrides and exclusions lists their keys. Overrides are tried in the order the file lists them.

The run itself§

KeyDefaultOptionDoes
output_dirnone-o, --outputThe folder to write S3LightFixes.omwaddon into
auto_enablefalse-e, --auto-enableAdd the plugin to the user openmw.cfg
no_notificationsfalse-n, --no-notificationsPrint messages instead of showing dialogs
debugfalse-d, --debugPrint the settings, the OpenMW config and the plugin header to standard error
dry_runfalse--dry-runPrint what would change and write nothing
validate_configfalse--validate-configCheck the settings and patterns, and stop
save_configfalse-U for one runWrite this file on every run

dry_run and validate_config cannot both be true, unless the command line turns one of them off.

output_dir needs care. The first run writes the folder it chose, data-local or the folder you ran it from, into the file, and later runs keep writing there even if you move data-local or run the program from elsewhere. Remove the line, or set it, when that changes. A folder named here that does not exist is created; one given with --output must already exist. Where files go has the whole rule.