Skip to content
Cl3mus33 edited this page Aug 20, 2026 · 1 revision

Limitations and Known Issues

AutoSeasons is deliberately scoped. This page lists what it does not do, and situations where its output is worth a second look, so you know what to expect rather than being surprised.

It only finds art that already exists

AutoSeasons never generates or edits a texture or mesh itself. It scans for seasonal siblings that already exist on disk (by naming convention, or via an existing PBR rule) and wires the plugin/ini data to use them. If no mod in your load order ships seasonal art for a given object, AutoSeasons has nothing to swap it to and simply leaves it alone — it cannot invent a winter variant of a texture that doesn't exist.

Scope: which record types

AutoSeasons scans Static, Activator, Furniture, MovableStatic, Tree, Flora, and LandscapeTexture records only. It does not touch weather, lighting, water, NPCs, or any record type outside this list.

Interiors and dungeon kits are excluded by default

The default blocklist and EditorID-keyword list deliberately exclude interior-only asset trees (dungeon kits, city/building interiors, Blackreach, etc.) and always-dead/lifeless statics — these are never meant to seasonally vary and are skipped regardless of what art exists for them. This is tunable (see Using AutoSeasons), but the defaults assume a typical modlist and may need adjusting for an unusual one.

Grass is landscape-texture-driven, not per-object

Seasons of Skyrim has no mechanism for swapping individually-placed grass objects — grass in Skyrim is drawn from whichever LandscapeTexture is currently winning on a given patch of terrain, not placed as its own reference. AutoSeasons' grass handling follows this: it swaps which grass meshes a LandscapeTexture's seasonal duplicate references, and can drop grass with no winter variant (see Remove grass in winter in Using AutoSeasons). There is no way to seasonally vary a grass object independent of its LandscapeTexture, because the game itself doesn't support that.

Conflict resolution is per-mod, not per-record

Season Mod Conflicts resolution — respecting or overwriting another mod's own Data/Seasons declarations — is controlled per foreign mod, not per individual record. On a real load order this can mean thousands of individual coverage decisions across only a handful of distinct mods, so a per-mod toggle is what stays usable; there's no fine-grained "override just this one record" control.

PBR meshes need a separate PGPatcher run

AutoSeasons authors the PBRNIFPatcher rules a seasonal duplicate needs, but never converts a mesh to PBR itself — that conversion only happens when you run PGPatcher afterward, pointed at the same merged load order including AutoSeasons' own output. Forgetting this step means the plugin-side seasonal swap happens but the PBR meshes it depends on are never actually generated.

Windows only

AutoSeasons is a native Windows application (wxWidgets GUI, .NET 8 Mutagen backend via DNNE). There is no Linux/macOS build, and running it under Proton/Wine is unsupported and untested.

No automatic conflict detection between overlapping mod texture packs

If two different mods both ship a seasonal variant for the exact same texture path with different content, AutoSeasons resolves this the same way the rest of your load order resolves any texture conflict — by load order priority in the merged view it scans — not by any seasonal-specific logic. It doesn't warn you about this kind of overlap.

Re-running is not incremental

Every generation is a full fresh scan and rebuild of AutoSeasons' own output — it always clears its previous output first rather than diffing against it. For a very large load order this means every run takes roughly the same time regardless of how much actually changed since the last run.

Clone this wiki locally