The load order is:
- core data
- Managed AddOns, in filesystem order of identifier
- AddOns, in filesystem order of OXP folder name
Filesystem order of identifier is alphabetical on Windows, random on Mac, and usually random on Linux unless you do something weird like create a fat32 filesystem just for your AddOns folders.
Managed AddOns are all loaded first to make it easy for people to create
personal overrides for any of them by putting the relevant files in their AddOns folder.
If you want to
distribute an override then this needs thinking about a bit more. We do add features with every version to make it easier for OXPs to coexist - some of the design of the new system populator in 1.80 was directly inspired by the station/mission conflict Smivs mentions, for instance - but where two OXPs provide the same file (or for plists, the same key) there's not much can be done.
In this particular case a potential solution to allow OXPs to override selected images (but not necessarily all) from BGS is:
- BGS uses setScreenBackground() and setScreenOverlay() rather than the plists for setting backgrounds - i.e. doing in JS what Oolite normally does in core - and provides a default list
- BGS provides a mechanism in JS for other OXPs to alter its default background file list
- OXPs wishing to use that mechanism add images under unique names (so file loading order doesn't matter). The usual mechanism for ensuring BGS' startUp is run first can be used.
Not all plists can be overridden this way by script, but most can.
(Sound is different - there are problems with allowing OXPs to override customsounds.plist from script which I've not yet thought of a good solution for)