stblib - STB's Inform Libraries, v.6.10.1 ========================================= This package includes a number of changes (bugfixes and additions) to the existing Inform libraries. As much as possible, these changes have been made through use of "Replace", but a few small changes were made in-place to ENGLISH.H and VERBLIBM.H, as indicated in the patch file. ------------------------------------------------------------------------------ INSTALLING THE RELEASE To use this release, apply the patch to Library 6/10, serial 991113. Then you must alter your source code in two ways: * Include "stbparse.h" instead of "parser.h" * If you define a LibaryMessages object, subclass it from STBLibraryMessages; if you do not, define the constant NO_LIBRARY_MESSAGES before including stbparse.h Fortunately, you seem to be able to Replace library functions defined in stbparse.h, but I'm not sure why, as this behavior is inconsistent with the description given in the DMan. (If you do replace a library function that stbparse.h itself replaces, make sure you base yours on the stbparse.h definition.) ------------------------------------------------------------------------------ Optional capabilities in stblib are available by defining certain constants: * SERIAL_COMMAS The library normally prints lists as "X, Y and Z"; this flag produces "X, Y, and Z". Zarf's Hunter in Darkness source release features a similar library mod, but my quick glance at his code suggests that it will print "X, and Y" for a two-item series, whereas mine prints "X and Y" for two items--but I may be misunderstanding his code. This modification changes "Verblibm.h". * IGNORE_TAKEREMOVE_ON_ANCESTORS Ignore the "Take/Remove" restrictions on ancestors, e.g. only apply them on the parent of an object being taken/removed. This allows a container to be a child (component) of a transparent non-container object and behave correctly (I think--there may be dire consequences that I have yet to find, e.g. with deeper nesting). * USE_NONLOCAL Provides an attribute "nonlocal" which causes almost all actions to fail with the new library message "That/those is/are far away." e.g. for distant scenery like sun or mountains. Allowed actions are Examine, Listen, not sure what else--the routine ObjectIsUntouchable always returns true for nonlocal objects. Consumes one common attribute if defined. New LibraryMessages: Miscellany,NL_MSG: default verb message LookUnder,3: response to LOOK UNDER X where x is nonlocal To override this message on a per-object basis, rather than define lots of 'before' cases for that object, change the LibraryMessage to query a property on the object. * USE_INSUBSTANTIAL Provides an attribute "insubstantial" which causes all touch-based actions to fail with the new library message "That/those is/are insubstantial.", e.g. for projections of light and shadow. Consumes one common attribute if defined. New LibraryMessages: Miscellany,IS_MSG: default verb message PutOn ,9: response to PUT X ON Y where Y is insubstantial Burn, 2: response to BURN X where X is insubstantial Touch, 4: response to TOUCH X where X is insubstantial To override this message on a per-object basis, rather than define lots of 'before' cases for that object, change the LibraryMessage to query a property on the object. * TX_GLOBALS Causes all the internal constants such as SCORE__TX to be declared as global variables instead of constants; this allows them to be overriden, since "Replace" for constants is not supported by Inform. Thus you can change them without modifying the library, or even change them on the fly. One drawback: this uses up a lot of global variables. This change alters "English.h". ------------------------------------------------------------------------------ Bugfixes: * The successful ##Take library message wasn't being passed the object id of the object that was taken. (changes "verblibm.h") * Push and Turn were incorrectly calling Pull's library messages in one case. (fixed in stbparse.h) ------------------------------------------------------------------------------