BGforge multi-language server

BGforge MLS is a collection of tools for working with classic RPG modding languages and file formats. It supports Star-Trek Scripting Language (.ssl) used in Fallout 1 and 2, several WeiDU and Infinity Engine formats (.d, .baf, .tp2, .tra, .2da), Sword Coast Stratagems Scripting Language (.ssl, .slb), and the TypeScript-based languages TSSL, TBAF, and TD.
Originally a VS Code extension, it now also works with various other editors. Setup guides are available for Sublime, Neovim, Emacs, JetBrains, Helix, Zed, Kate, Notepad++, and Geany. Standalone LSP server is published in NPM.
- Languages: Fallout SSL; WeiDU BAF, D, TP2.
- TypeScript-based languages: TSSL, TBAF, TD.
- Other formats: TRA, MSG, 2DA; Fallout worldmap.txt, scripts.lst; weidu.log.
- Binary formats: Fallout PRO, MAP; Infinity ITM, SPL, EFF, CRE.
- Animations: Fallout FRM; Infinity BAM.
- GitHub actions: format, transpile, compile, convert binaries to JSON and back.
- Installation
- Hotkeys
- Screenshots: completion, hover, error reporting, dialog editor, animation viewer.
- Forum
Languages
| Feature |
Fallout SSL |
WeiDU BAF/SSL |
WeiDU D |
WeiDU TP2 |
| Extensions |
.ssl, .h |
.baf, .ssl, .slb |
.d |
.tp2, .tpa, .tph, .tpp |
| Completion |
✓ |
✓ |
✓ |
✓ |
| Hover |
✓ |
✓ |
✓ |
✓ |
| Signature help |
✓ |
|
|
|
| Go to definition |
✓ |
|
✓ |
✓ |
| Find references |
✓ |
|
✓ |
✓ |
| Formatting |
✓ |
✓ |
✓ |
✓ |
| Document symbols |
✓ |
|
✓ |
✓ |
| Workspace symbols |
✓ |
|
✓ |
✓ |
| Semantic tokens |
✓ |
|
|
✓ |
| Rename |
✓ |
|
✓ |
Same file |
| Inlay hints |
.msg |
.tra |
.tra |
.tra |
| Diagnostics |
✓ |
✓ |
✓ |
✓ |
| JSDoc |
✓ |
|
✓ |
✓ |
| Folding |
✓ |
✓ |
✓ |
✓ |
| Dialog editor |
✓ |
|
✓ |
|
| Compiler |
ssl |
|
|
|
Compiled Fallout .int scripts open as editable SSL - highlighting, outline and search - and save back over the .int in place. Local and argument names are not stored in a compiled script, so those are generated; a script that cannot be structured back opens as a read-only instruction listing.
Compiled Infinity Engine .bcs scripts open the same way, as editable BAF, and save back over the .bcs in place. Every name in one is a number the install's own tables give a meaning to, so this needs a game open; without one the tab says so and stays read-only.
TypeScript-based languages
These are TypeScript-like language subsets for writing mods. TSSL compiles straight to Fallout bytecode; TBAF and TD generate WeiDU source, which WeiDU then installs.
They bring the TypeScript type system, many TypeScript features, and better tooling to modding.
| Language |
Extension |
Output |
Inlay Hints |
Dialog Editor |
| TSSL |
.tssl |
.int |
.msg |
✓ |
| TBAF |
.tbaf |
.baf |
.tra |
|
| TD |
.td |
.d |
.tra |
✓ |
TSSL (.tssl) compiles .int. Optionally can transpile to .ssl as well. Companion project: FOlib.
TBAF (.tbaf) compiles to WeiDU BAF. Important additions include functions, loops, variables, arrays, enums. Companion project: IETS.
TD (.td) compiles to WeiDU D. Same features as TBAF, but has different structure. Also uses IETS.
| Format / Extensions |
Highlighting |
Completion |
Hover |
GoTo |
References |
Formatting |
| Fallout worldmap.txt |
✓ |
✓ |
✓ |
|
|
|
| Fallout MSG |
✓ |
|
|
|
✓ |
✓ |
| Fallout scripts.lst |
✓ |
|
|
|
|
✓ |
| WeiDU TRA |
✓ |
|
|
|
✓ |
✓ |
| WeiDU.log |
✓ |
|
|
tp2 |
|
|
| Infinity 2DA |
✓ |
|
|
|
|
✓ |
Fallout PRO and MAP files, and Infinity Engine ITM, SPL, EFF, and CRE files, have a built-in binary editor with JSON dump/load support.
GitHub Actions
GitHub Actions keep generated artifacts in mod repositories up to date: they refresh binary-format JSON snapshots, format Fallout/WeiDU sources, and regenerate transpiler output, committing the results back or simply verifying they match. A fourth compiles TSSL to Fallout INT bytecode as a CI check.
Installation
- Install BGforge MLS from the VS Code Marketplace.
Alternatively, download the package from GitHub Releases and install it manually.
- Check general settings.
- Check file associations.
- Check hotkeys.
- Enable custom theme and icon theme.
- (Infinity Engine) Install IElib.
Hotkeys
CTRL+R: compile a Fallout .ssl or .tssl file, transpile a .tbaf or .td, or parse a WeiDU file, reporting errors if any.
CTRL+SHIFT+V: open the Dialog Editor (SSL, TSSL, D, TD files).
- Standard VS Code hotkeys:
CTRL+SHIFT+O: document symbols
CTRL+T: workspace symbols
Screenshots
Infinity Engine highlighting and completion

Fallout highlighting and hovers

Dialog editor
Visual dialog editor for SSL, TSSL, D, and TD files. Open with CTRL+SHIFT+V or the command palette. Shows states, transitions, and resolved translation strings.
Compiled Infinity Engine .dlg files open in the same editor: the states, transitions, triggers and actions the file stores. Spoken text lives in the game's dialog.tlk, so it resolves once a game is open - the editor offers a button to open one when there is none. What a line says can be changed and saved, by pointing it at a different entry in the game's text. The trigger on a state and the condition and action on a reply are script text the file stores, and are edited in place. Replies can be added, removed and retargeted - including at a state in another dialog the tree holds - and states appended; a state's number is its position in the file and other dialogs address it by that number, so states are never renumbered - one is taken out of play by detaching it, which points the replies that led there at the end of the conversation and leaves the record where it is. The dialogs this conversation hands off to, and the ones that hand off to it, are drawn in the same graph as read-only context.

Error reporting

Binary editor

Animation viewer
Supported animation formats are BAM and FRM. PNG import/export is available, as well as cross-format save (conversion).
