A fan mission loader for Thief Gold, Thief II: The Metal Age, Thief: Deadly Shadows, and System Shock 2
Table of contents
- Getting started
- Main window
- Settings window
- Windows 7 SP1, Windows 8.1, or Windows 10 Anniversary Update or newer
- .NET Framework 4.7.2 or newer (the Windows version requirements are a direct result of this)
Program Files or
Program Files (x86)).
Some examples of good locations might be
When you start AngelLoader for the first time, you'll see the initial setup window:
LanguageIf other languages are available, you can choose them here. Changes will take effect immediately.
Thief 1, Thief 2 and System Shock 2 must be patched with NewDark in order for AngelLoader to be able to use them. Thief 3 must be patched with the Sneaky Upgrade. Version 18.104.22.168 or above is recommended; while versions as far back as 1.1.3 may work, they haven't been tested and are not officially supported.
Steam optionsIf you own one or more supported games on Steam, you can specify the location of
steam.exe and choose which games should be launched through it. Launching a game in this way enables access to Steam features such as the in-game overlay, play time counter, etc.
FM archive pathsHere you can set the directory or directories where your fan mission archives (.zip or .7z files) are located. If you enable "Include subfolders", then all subfolders inside all directories you specify will also be searched for FM archives (this matches NewDarkLoader's behavior). Otherwise, only the exact directories you specify will be searched. A note on fan mission archive directories: Because multiple directories are allowed, there is the potential for duplicate files. In this case, AngelLoader will simply use the first file it finds, and ignore any further files with the same name. It is recommended that you don't put duplicate files in your archive directories, but if you do, then as long as they're exact copies (ie., not different files with the same name) then it will be fine. It's also recommended that your archive directories should only contain fan missions and/or FMSel/NewDarkLoader backup files. While AngelLoader does attempt to reject non-mission archives on scan, it's still best to keep unrelated files out of your FM directories.
Startup scanWhenever new FMs are detected, they will be automatically scanned. If you cancel the scan, then they will be scanned when manually selected, similar to DarkLoader. It's recommended that you let the scan finish, especially if you're using game tabs, as it will result in FMs being categorized properly.
Paths settings section, it will be grayed out.
ImportClicking this button will bring up a list of other loaders you can import data from. Supported loaders are DarkLoader, NewDarkLoader, and FMSel. If you have a large collection of FM data from one of these loaders (comments, ratings, finished statuses, etc.) then you can import that data into AngelLoader, replacing any current data (so be careful).
SettingsOpens the Settings window.
Clicking the drop-down arrow () at the right side of the filter bar will allow you to hide individual filters to minimize clutter. When a filter is hidden, it will be automatically switched off.Settings window. The default is 15 days.
Refresh FMs listReloads the list of FMs from disk. This will always occur on startup, but this button is useful if you've added new FMs since starting AngelLoader.
The list can also be refreshed from disk by pressing
Shift-F5 when the mission list is focused.
Refresh filtersWhen you edit a mission's data, the list of missions is not refreshed. This is to prevent a mission that no longer fits the filter criteria from being filtered out of the list in the middle of being edited. If you've edited an FM and want to re-filter the list, click this button.
The list can also be refreshed by pressing
F5 when the mission list is focused.
Clear filtersClears all filters.
Reset layout buttonResets the main window to its default proportions.
Draggable splittersYou can drag these horizontally or vertically to resize the sections of the window. If you drag at the corner between the two splitters, you can resize all three main sections at once.
Readme selection dropdownIf the selected FM contains multiple readme files, this will allow you to choose one to view. If the FM contains only one readme or no readmes, the readme selection dropdown will be hidden.
Character encodingIf the readme's text is not being displayed correctly (for example, if there are '?' characters where accented characters should be, or if the text is generally garbled), choosing a different character encoding may fix the issue. Although AngelLoader attempts to detect the correct character encoding on its own, it occasionally guesses wrong, so a manual selection option is provided. Character encoding selections are saved per-readme. Character encoding selection is only available for plain-text readmes. Other formats specify their character encoding information themselves, so neither detection nor selection is needed in that case. If a readme does not support character encoding selection, the icon will be grayed out.
Zoom inMakes the readme text larger.
Zoom outMakes the readme text smaller.
Reset zoomResets the readme text size to the default. In addition to clicking the zoom buttons, the readme can also be zoomed by pressing
Ctrl-0, or by holding
Ctrl and scrolling the mouse wheel while the cursor is over the readme area.
FullscreenWhen you click the fullscreen button, the readme area enlarges to take up the entire window. Click the button again to restore it to normal size.
Play FMClick this button to play the currently selected FM. If the FM is not installed, it will be installed automatically first. If multiple FMs are selected, this button will be disabled.
Play without FMClick this button to bring up a list of supported games. Only games that you've provided a path to will be enabled. Clicking on one of these games will let you play it without loading an FM.
If you have NewDark 1.27 or later and have installed the multiplayer option (meaning Thief2MP.exe exists in your Thief 2 directory), then there will be an additional option in the list to play Thief 2 in multiplayer mode. If you've chosen to display this as multiple buttons instead, then only the buttons for games that you've provided a path to will be displayed. Otherwise it works similarly.
/ Install / Uninstall FM(s)If the currently selected FM(s) are not installed, this button will install them; otherwise, it will uninstall them.
Web searchClick this button to search the web for the selected FM. You can set the search URL in the Settings window. If multiple FMs are selected, this button will be disabled.
SettingsOpens the Settings window.
visibility, and order. Drag a column left or right to change its order. Clicking on a column header will sort by that column. Click once to sort by ascending, and click again to sort by descending. Double-click the size grip to the right of a column to auto-size that column to fit its content.
Right-click on any column header or any blank space in the list to bring up the column header context menu.
Right-click on an FM to bring up the FM context menu.
Double-click on a mission or press Enter when a mission is selected to play that mission. By default you will be asked for confirmation in this case; see Play FM on double-click / Enter.Press the Delete key while one or more FMs are selected to delete their archives from disk. You will be asked for confirmation first. If one or more selected FMs are installed, you will be asked if you want to uninstall them before deleting their archives.
You can zoom the FMs list either with the zoom buttons on the top bar, or with
Ctrl+0, or with Ctrl+mousewheel.
GameDisplays an icon based on which game the mission is for. If unknown, it will be blank. The icons are:
- Thief II
- Thief: Deadly Shadows
- System Shock 2
- Unsupported mission or non-mission archive (these only appear when the Show Unsupported filter is enabled).
InstalledDisplays a icon if an FM is installed; otherwise remains blank.
TitleDisplays an FM's title, taking into account the Move article setting. If no title has been scanned for, or a title otherwise can't be found, this will display the FM's archive name without the extension. If no archive name can be found then it will display the FM's installed folder name.
ArchiveDisplays the FM's archive name with extension.
AuthorDisplays the FM's author if one can be found.
SizeDisplays the FM's compressed (archived) size if possible. If no archive can be found, then it will display the FM's uncompressed (installed) size.
RatingDisplays the FM's rating using the selected style.
FinishedDisplays an icon representing which difficulty or difficulties you've finished an FM on.
- Normal (Easy for Thief: Deadly Shadows and System Shock 2)
- Hard (Normal for Thief: Deadly Shadows and System Shock 2)
- Expert (Hard for Thief: Deadly Shadows and System Shock 2)
- Extreme (Expert for Thief: Deadly Shadows, Impossible for System Shock 2)
Release DateDisplays the FM's release date in the specified format.
Last PlayedDisplays the FM's last played date in the specified format.
Date AddedDisplays the date the FM was added to the list.
Disabled ModsDisplays the disabled mods, if any, for the FM.
CommentDisplays the FM's comment, if any, up to the first 100 characters or the first linebreak, whichever comes first.
Play FMPlays the currently selected FM. If the FM is not installed, it will be installed automatically first. If multiple FMs are selected, this option will be disabled.
Play FM (multiplayer)This item will only appear if Thief2MP.exe was found in the Thief 2 directory. Clicking it will allow you to play the selected FM in multiplayer mode (requires NewDark 1.27 or later). If the FM is not installed, it will be installed automatically first.
Install / Uninstall FM(s)If the currently selected FM(s) are not installed, this will install them; otherwise, it will uninstall them.
Pin to top / Unpin from topYou can choose to pin FMs to the top of list so that they will always remain there regardless of sorting or filtering. When an FM is pinned, this option will unpin it instead. When multiple FMs are selected, there will be two separate options, Pin and Unpin.
Delete FM archive(s)This will allow you to delete one or more FMs' archives from disk. You can also press the Delete key while the FMs list is focused to achieve the same thing. In both cases, you will be asked for confirmation first. If one or more selected FMs are installed, you will be asked if you want to uninstall them before deleting their archives.
Open FM in DromEdThis item will only appear if DromEd.exe (or ShockEd.exe for System Shock 2) was found in the game directory. Clicking it will open the currently selected FM in DromEd or ShockEd, installing it first if necessary.
This option does not apply to Thief: Deadly Shadows.
Open FM folderOpens the FM's installed folder.
Scan FM(s)This will scan the selected FM(s). If you only want to scan for certain fields, see the Edit FM tab.
Convert audio submenuThis menu contains the same audio conversion options as in the Settings window, but they can be run at any time here.
This option is only available for installed FMs.
Rating submenuHere you can rate the selected FM(s). The ratings will appear as they've been set in the Settings window: either 0-10 or 0-5.
Unknown - this is mainly for compatibility with imported FMSel data, which doesn't mark difficulties for its Finished value.
For Thief 1 and Thief 2, the other difficulties are Normal, Hard, Expert, and Extreme.
For Thief: Deadly Shadows, they are Easy, Normal, Hard, and Expert.
For System Shock 2, they are Easy, Normal, Hard, and Impossible.
"Extreme" is not an official Thief difficulty, but is provided for compatibility with imported DarkLoader data, or to use as you see fit (to denote Ghost, etc).
Web searchClick this to search the web for the selected mission. You can set the search URL in the Settings window.
Collapse / expand buttonClick this to collapse (hide) the FM details section. Click it again to expand it.
Alternate titles buttonSometimes, multiple different titles will be detected during a scan. If the default title doesn't look correct, try clicking this dropdown button to see if another is available. Clicking an alternate title will change the FM's title to the one that you've selected.
Release date and Last playedIf a date hasn't been scanned for or cannot be detected, its checkbox will be unchecked and no date will be shown.
Language selectionHere you can choose to play an FM in a particular language. Only languages the FM supports will be available.
category: tag. If you don't specify a category when creating a new tag, that tag will be placed in the
"All changed files" backup setting, then these fixes will be backed up and restored the next time you install the FM.
.dml patching is not supported for Thief: Deadly Shadows.
Open FM folderIf you want to manually modify the FM's installed folder, you can open it here.
NOTE! FM folders contain a special file,
fmsel.inf, which must not be deleted. This file contains metadata and is, due to its nature, not included in differential backups. While AngelLoader will sometimes be able to regenerate it or work without it, deleting it is asking for trouble. Don't do it.
Mods listHere you can enable or disable mods per-FM. Checked mods will be enabled and unchecked mods will be disabled. The Disabled mods text box will show disabled mods in the single-line format (like in FMSel) and can be edited manually if desired, but it's best to leave it and just use the checkboxes. Note that the list simply displays all mods that are specified in
cam_mod.ini; you may or may not actually have all of them installed. If a mod is not actually installed, then enabling it will do nothing.
Show important modsThere are some mods that are vital to the normal functioning of an up-to-date Thief install, and should not be disabled under normal circumstances. Check this box to display those mods in the list anyway.
Initial Setup window, except that Language has been moved to the Other section. See Initial Setup for an explanation of these settings.
LanguageIf other languages are available, you can choose them here. Changes will take effect immediately.
ThemeHere you can choose either the classic Windows theme or dark mode. Changes will take effect immediately.
Game organizationHere you can choose to either organize games into their own tabs, or to display your FMs as one list and allow filtering by game. When game tabs are enabled, each game will have its own selected FM and set of filters that will be retained between tab switches. Organizing games by tab can make things cleaner, but if you want to filter without regard to game (say, to find all missions by a single author who has released missions for multiple games), then having one list with game filters will work better.
If you select the Use short names on game tabs checkbox, game tabs will be displayed with abbreviated names to save screen space.show recently added FMs at the top of the list, only FMs added within the selected number of days will be included.
Show or hide interface elementsHide "Install / Uninstall FM" button:
For extra-strength misclick prevention, enable this. You will still be able to install and uninstall FMs from the FM context menu. Hide FM list zoom buttons:
Since you can zoom the FMs list with the keyboard or Ctrl+mousewheel, you can hide these buttons to free up room. Hide exit button:
Allows you to show or hide an Exit button in the bottom-right corner of the main window, similar to FMSel.
Readme boxUse a fixed-width font when displaying plain text:
Some readmes may look better when displayed in a fixed-width font. This option only applies to plain text readme files; other file types will use their own fonts. This behavior matches DarkLoader.
Play without FMChoose what style to display the "Play without FM" controls in.
This option has no effect for Thief: Deadly Shadows.
Convert .oggs to .wavs on installQuoted from the FMSel manual:
The game can play OGG files but it can under some circumstance cause short hiccups, on less powerful computers, performance heavy missions or with large OGG files. In such cases it might help to convert them to WAV files during installation.
This option has no effect for Thief: Deadly Shadows.
Installing FMsChoose whether to be prompted before installing FM(s).
Confirm before uninstallingIf this is enabled, you will be prompted for confirmation when uninstalling FM(s). .dml patches to the FM, or made other modifications such as creating or modifying an fm.cfg file, fixing readables, etc. Because AngelLoader aims to be patch-friendly, this option is the default. You can also choose to always be asked if you want to back up data when uninstalling an FM.
$TITLE$ can be placed anywhere in the URL to insert the fan mission's title into the final string. For instance, if the URL was
and the currently selected FM's title was "Broken Triad", then the final URL actually passed to your web browser would be:
https://www.google.com/search?q="Broken Triad" site:ttlg.com
Data\Languages folder. An
English.ini file is included in that folder as an example, and other language files are available for separate download. Language files use a simple
ini format, and must be saved with UTF8 encoding in order to guarantee correct display of text.
Most user interface elements will be automatically resized to accommodate translated strings, but a few will not. These include the date and rating filter windows and some of the buttons in the tags filter window. It's up to the translator to ensure everything looks correct.
Archive filesZip (.zip) and 7-Zip (.7z) files are supported.
Audio filesMP3 (.mp3), Ogg Vorbis (.ogg), and Wave (.wav) files are supported in fan missions. MP3 files will be automatically converted to WAV files on install, as NewDark does not support playing them directly.
Readme filesPlain text (.txt), Rich text (.rtf), HTML (.htm, .html), and GarrettLoader Markup Language (.glml) files are supported. HTML files can be a great deal fancier than any of the other formats, but they must be viewed in a web browser (AngelLoader does not support viewing them in-app, although it provides a button to launch them in the user's web browser).
Dahenjo for helping me hunt down some bugs and suggesting features.
Xanfre for contributing some excellent improvements to the RichTextBox behavior.
EnYB0La for providing the impetus to start writing what became FMScanner, AngelLoader's scanner module. Without it, I never would have attempted to create a standalone NewDark-supporting loader!
Björn Henke and Telliamed for creating DarkLoader, the de facto standard Thief loader for many years, and the original inspiration for AngelLoader's UI and standalone nature.
R Soul for creating NewDarkLoader, a modern loader with the classic DarkLoader UI, and also a source of inspiration for several aspects of AngelLoader.
potterr for creating GarrettLoader, the first loader (as far as I know) to support all three Thief games, the first loader I ever used, and the source of the GLML file format.
Le Corbeau, the mysterious group behind NewDark as well as FMSel, the official NewDark fan mission loader.
All of the above programs were of tremendous help in developing AngelLoader, so thank you all!
I'd also like to thank Looking Glass Studios for creating Thief, the TTLG community for keeping it alive, and my viewers for watching me goof around on YouTube for all those years.
AngelLoader is open-source under the MIT license. You can view the source at AngelLoader's GitHub repository.