A brief history of mca.h ======================== The work on mca.h was begun in 2001. The author had already made a programming language specifically for the creation of text based multiple choice games, but realised that an Inform library would be superior in many ways. The basic concepts and some bits of code were borrowed from David Glasser's phtalkoo.h, and the overall design was very object oriented. In 2004, the author returned to this project and considered releasing it as it was, but soon discovered how awful the library really was. As a consequence, it was almost entirely rewritten. The object-orientedness was found to be an incredible waste of readable memory, so most of that had to go. The code that dealt with options was greatly optimised as well (the major problem with the first version had always been its unbearable slowness), and an array of new features were added to make programming easier. The second official release (version 2.1) made one important change to the library. It moved all language specific parts, messages and dictionary words, to a separate file, thus allowing both for easier translation and for easier substitution of said messages and dictionary words. Furthermore, the event handler was fixed so that moving the story to a node with the noevents attribute set would prevent further events from firing. This also meant that EndNodes no longer were in any sense special to the library -- they were now just a convenient built-in class. Some changes were also made to the banner, so that Story and Headline were made optional, and so that line feeds would be printed after both of these. An AfterPrompt() entry point was added as well. In version 2.2, the player got two new meta commands: undo and repeat, the latter of which would repeat the text since the last choice. Text buffering was now required, which in turn caused the need for a set of style codes to be implemented. In addition, an optional inventory management system was introduced, and lastly, the save/restore code was tidied up somewhat. Then followed version 2.21, which was a minor revision, fixing a bug involving the status line and the text buffering system. The only new feature was the possibility of adding Action methods to nodes. Another feature -- the time global variable -- was dropped. Much to the authors annoyance, another status line bug still remained, but that was remedied in version 2.22. A new entry point was introduced, which made it possible to add custom style codes, and two more strings were moved to the language specific file. In this version, a sample game was also added to the distribution.