About twenty years ago Robert Masenten released a portable interpreter for AGT games, called AGiliTy. I wrote a Windows port of it, but hadn’t done much else with it since then. But some bug reports from @Angstsmurf, combined with a wish to play a few AGT games (notably Shades of Gray and The Multi-dimensional Thief) caused me to go back to this.
I have added a way to have the random number generator be entirely reproducible on all systems, and used that to generate play-throughs for Shades of Gray and The Multi-dimensional Thief, fixing bugs as I found them. As Robert hasn’t been heard of for years, I’ve called my version 1.1.2 (Robert’s last release was 1.1.1).
Full list of changes:
- Added a STABLE_RANDOM configuration option. When enabled, the interpreter will use a fixed algorithm to generate random numbers, allowing log files to be created that will work on any system.
- In the “tests” directory there are now log files that play through The Multi-dimensional Thief and Shades of Gray to completion. The intention is to add further log files for other games in time, as tests of the interpreter. Note that the above STABLE_RANDOM configuration option must be turned on to use these log files.
- Substitutions generated by the interpreter’s main loop are handled correctly. For example, dying in Shades of Gray no longer results in a “$You$ have died” message.
- Metacommands overriding two-word synonyms built into the interpreter (such as GET OUT, which is a synonym for OUT) are handled.
- The ability of metacommands to use expansions like $noun$ has been enabled for the AGT 1.5 variants.
- The logic to set up roomflags when reading from DA1 files was not quite right. This has been fixed, and has been enabled for the AGT 1.5 variants. As a result, The Multi-dimensional Thief is finishable. Note that if you have a version of a game affected by this change as an AGX file, you will need to re-generate the AGX file from the original AGT data files.
- The version of AGT used by Shades of Gray can override SCREAM in a dummy verb.
- The order in which dummy verbs are scanned when parsing now better matches the order used in the original AGT interpreters.
- Smart disambiguation is on by default for AGT 1.5 and later.
- For pre-Magx games, GetNumberInput always returns a number in the range of a 16-bit signed integer, that is, between -32768 and 32767.