scmJS docs

Data sets

The editor draws from one set of game files at a time, and a data set names one. The default is the game's own. Any other is a mod's: the same files in the same formats with some of them replaced, its own units.dat, graphics, sounds or stat_txt.tbl. Help ▸ Game Data… installs one beside the game's files and switches between them; the Data sets list appears once there is a second one, and the choice is remembered.

To add one, give it a name and pick a folder. The folder has to hold the game's two archives, because a mod replaces files rather than bringing the rest, together with the mod's own files: any .mpq archives, and loose files under arr, unit, tileset, game, scripts or rez folders, the way the mod's own loader lays them over the game. Anything else in the folder is ignored. The copy is stored under its own name beside the game's, so removing one leaves the others alone. On the desktop the app's own extraction is always the game's; a mod's copy lives in the browser-style storage there as anywhere else.

Switching drops everything decoded from the previous files, since the same ids now mean different pictures, and loads again from the new ones; an open map stays open and picks the new graphics up as they arrive. Plugins see the switch through api.gameData.

A data set is a name over files in the game's formats, nothing more. The table sizes (228 unit types, 130 weapons, 61 upgrades, 44 technologies), the tileset formats and the map file's own fixed-width sections are the game's, so a mod that extends them, with more unit types, a longer .dat layout or extended tilesets, is not a data set and is not supported.

Names#

The game names things in stat_txt.tbl: entries 0 to 227 are the unit types, and the weapon, upgrade and technology tables each point into the same file. The editor's own name tables are StarEdit's, which read better in about fifty places ("Cargo Ship (Unused)" where the game says "Unused") and are the vocabulary the text trigger format and other editors share.

The rule is per entry: where the loaded data's name differs from what the game's own data says for that id, the loaded name shows; everywhere else, StarEdit's stands. With Blizzard's files nothing changes. With a mod's, whatever it renamed shows the new name in every palette, list and dialog, and the text trigger parser accepts both names, so a trigger printed under a mod reads back.