

The PunyInform adventure game programming library has been updated to version 5.14. PunyInform is a library written in Inform 6 which allows authors to create text adventure games / interactive fiction using the Z-machine virtual machine, to be played on 8-bit computers as well as newer platforms. It provides a parser, implementations of common verbs, as well as a framework for writing text adventures.
Changes in the PunyInform Library are as follows for this release:
New/changed functionality
- Added a task to the DrawStatusLine routine – DrawStatusLine(true) must print the correct number of newline characters needed at the start of the game to make sure the first text isn’t accidentally covered by the statusline (Issue #141). For more information, see manual.
- New print rule: SingularS, which prints an “s” if the argument is a singular object and not the player. I.e. print (The) obj, ” contain”, (SingularS) obj, ” some wine.”;
- The way to call the _UpdateDarkness procedure has changed. It used to be _UpdateDarkness(p_look), where you’d set p_look to true if you wanted the procedure to print a room description if a transition from darkness to light was made. The call is now _UpdateDarkness(p_silent), and you set p_silent to true if you want to routine to not print anything. If you set it to false, or don’t give it a value, the routine performs a Look if going from dark to light, and prints a message if going from light to dark.
- howto/change_player.inf has been changed to call _UpdateDarkness in the new way.
- New message: The message MSG_NOW_DARK is now printed when the player’s location suddenly goes dark (Issue #142).
Optimizations:
- Improved the default abbreviations
Bugfixes:
- Fixed: Game name and version info was printed with no newline or space between, if constant Headline was undefined (Issue #140).
- Fixed: Message MSG_SEARCH_IN_IT_ISARE used when searching (“The sofa contains a photo.”) didn’t consider the pluralname attribute of the container. (Issue #138)
- Fixed: Object lists didn’t consider the pluralname attribute in extra information like “(which is closed)” (Issue #138).
- Fixed: The message MSG_TAKE_BELONG (e.g. “The staff seems to belong to Gandalf.”) didn’t adapt the sentence properly if the first object was an object with pluralname set (Issue #137).
- Fixed: The message MSG_TAKE_PART_OF (e.g. “The button seems to be part of the machine.”) didn’t adapt the sentence properly if the first object was an object with pluralname set (Issue #137).
- Fixed: howto/change_player.inf lacked a call to MoveFloatingObjects.
Important to note when upgrading:
- If your code replaces the DrawStatusLine routine, note that this routine has a new requirement – when called with a argument, and this argument is true, i.e. DrawStatusLine(true), the routine must not draw a statusline, but instead it must print the correct number of newline characters needed at the start of the game to make sure the first text isn’t accidentally covered by the statusline. For more information, see manual.
- If your code calls _UpdateDarkness, note that the way to call this routine has changed. It used to be _UpdateDarkness(p_look), where you’d set p_look to true if you wanted the procedure to print a room description if a transition from darkness to light was made. The call is now _UpdateDarkness(p_silent), and you set p_silent to true if you want to routine to not print anything. If you set it to false, or don’t give it a value, the routine performs a Look if going from dark to light, and prints a message if going from light to dark.
To download the source code for the PunyInform Library as well as other related information and documentation, visit the release page on GitHub.











