263 Commits
Author SHA1 Message Date
Oliver Hamlet 52aa53c391 Make GameInterface::IdentifyMainMasterFile() take a path
This is a breaking change, but avoids the need for libloot to know anything about how to find the master file for OpenMW.
2025-02-01 21:54:35 +00:00
Oliver Hamlet 84c0cca534 Implement support for OpenMW
Most of the complexity is handled by libloadorder, but it's worth noting that:

- The game path is OpenMW's install path, not Morrowind's
- OpenMW doesn't force master-flagged plugins to load before others
- OpenMW doesn't provide a way to record the load order of inactive plugins
- .omwgame and .omwaddon plugins are equivalent to .esm and .esp respectively, while .omwscripts plugins have a completely different format with none of the metadata that libloot uses.
- OpenMW effectively relies on additional data paths to load Morrowind's (and mods') files, and the last directory listed that contains a given filename is used to load a file with that filename, with the main data path effectively being the first listed.
- I've disabled support for ghosted plugins for OpenMW because it makes the multi-path stuff more confusing and may not provide any benefit.
2025-02-01 21:36:03 +00:00
Oliver Hamlet afdafa492e Fix typo in doc comment 2025-02-01 19:25:19 +00:00
Oliver Hamlet 44008ea720 Update changelog and version for 0.24.5 2024-10-24 10:40:20 +01:00
Oliver Hamlet b607fb259f Update changelog and version for 0.24.4 2024-10-08 10:59:31 +01:00
Oliver Hamlet 18dbb58964 Update changelog and version for 0.24.3 2024-10-05 16:49:58 +01:00
Oliver Hamlet 2c7c4ce7bf Update changelog and version for 0.24.2 2024-10-05 13:17:05 +01:00
Oliver Hamlet 924ee8982e Update changelog and version for 0.24.1 2024-09-15 19:10:01 +01:00
Oliver Hamlet 5ce09aa754 Update changelog and version for 0.24.0 2024-09-13 22:17:18 +01:00
Oliver Hamlet 6726532a40 Expose loot-condition-interpreter error codes to callers
Make ConditionSyntaxError extend from system_error instead of directly from runtime_error, so that callers can use the exception's code to distinguish between different causes.
2024-09-13 20:25:16 +01:00
Oliver Hamlet 11f7f0415a Add PluginInterface::IsBlueprintPlugin() 2024-09-13 20:25:06 +01:00
Oliver Hamlet 6f4dff4766 Sort blueprint plugins after all others
Also validate that no non-blueprint masters or non-masters are expected
to load after any blueprint masters.

The addition of a new EdgeType may be considered a breaking change to
the API, since it can result in the caller receiving a value it doesn't
know how to handle, but it doesn't break ABI compatibility. LOOT has
explicit handling for unknown values, so is fine.
2024-08-24 16:23:30 +01:00
Oliver Hamlet e9321ae544 Update changelog and version for 0.23.1 release 2024-08-24 11:28:30 +01:00
Oliver Hamlet 945d6b5a7a Throw esplugin errors as system_error exceptions
Instead of FileAccessError, so that callers can use the exception's code to distinguish between different causes.
2024-08-24 10:02:35 +01:00
Oliver Hamlet f3eabb639b Update changelog and version for 0.23.0 release 2024-06-29 22:09:55 +01:00
Oliver Hamlet f6d4cea461 Rename "override plugin" to "update plugin"
To match the terminology used by Starfield's Creation Kit.
2024-06-28 19:21:21 +01:00
Oliver Hamlet 46c19a4a7a Add medium plugin methods to PluginInterface 2024-06-28 19:21:00 +01:00
Oliver Hamlet 03baecec4c Update changelog and version for 0.22.4 release 2024-05-03 07:15:26 +01:00
Oliver Hamlet b23e33144e Update changelog and version for 0.22.3 release 2023-12-06 19:02:23 +00:00
Oliver Hamlet 8463e9ee7c Update changelog and version for 0.22.2 release 2023-11-25 17:05:41 +00:00
Oliver Hamlet 2614e02dbf Update version and changelog for v0.22.1 release 2023-10-06 14:49:16 +01:00
Oliver Hamlet 8a21b8321b Update version and changelogs for v0.22.0 release 2023-09-29 17:15:38 +01:00
Oliver Hamlet b549b00b28 Add support for Starfield
Starfield adds a new type of plugin that I'm calling an override plugin,
which does not use up a load order slot when active, and a plugin cannot
be light and override at the same time. It also increases the BA2
version number, though the differences are not relevant to libloot's
usage, and loads BA2s from plugins differently.

The latest libloadorder distinguishes between plugins that are
implicitly active (i.e. they're active despite not being listed in
plugins.txt) and those that are made to load in certain positions by the
game.
2023-09-28 23:01:15 +01:00
Oliver Hamlet 2408a7b3ba Remove SimpleMessage
It's no longer used by LOOT.
2023-09-12 19:56:53 +01:00
Oliver Hamlet 0a7efcb4d3 Update version and changelogs for v0.21 release 2023-08-30 19:57:06 +01:00