1.1 o First public release 1.1a,b o Additional verbs to complete major functional areas. 1.1c o Fixed decompression problem exposed by the post-comp02 release of Robert Goodwin's 'The PK Girl'. o Added undo functionality: - "Undo" verb - sc_undo_game_turn() function - sc_is_undo_available() query function o Fixed minor memory leak with status line and current room name in gs_copy(). 1.1d o Fixed an endian problem that prevented correct builds on big endian systems. Thanks to Jan-Erik Karlsson for isolating and reporting this problem, along with its fix. o Redesigned TAF file decompression to place far less stress on malloc and free functions. The old TAF file decompression module caused significant performance problems with AmigaOS malloc. Again, thanks to Jan-Erik Karlsson for this problem report. o Fixed omission in sc_free_game(), which used to fail to free memory allocated to holding raw TAF data. o Fixed omission in prop_destroy_node() which used to fail to free memory allocated to the child list. o Added preallocation of properties nodes, in pools, to scprops.c, further greatly reducing stress on malloc. With this change and the redesigned TAF compression, 'The PK Girl' becomes fully playable with SCARE through IFP; IFP's garbage collection now adds only around 6% to game load time. o Added handling for stateful objects and alternate room descriptions, combined with a few small tweaks to accommodate them. 1.1e o Fixed minuscule memory leak in gs_destroy(). o Fixed incorrect condition ordering in taf_append(). o Added tag stripping for game author and title, to neaten the title line first displayed for 'To Hell in a Hamper'. o Fixed bug in pf_strip_tags() that caused it to miss consecutive tags. o Added sc_get_game_max_score() interface query function. o Changed return type of os_read_line() from void to sc_bool; return of TRUE indicates data buffered, FALSE ignore and re-call. o Fixed a bug in run_player_input() that caused it to try to use old input or stack junk when an input line ended with a comma. o Substantial rewrite of os_glk.c to handle Microsoft Codepage 1252 characters, and provide transcripts, reading input from a file, and player input logs. o Improved alignment with newer jAsea code (objects worn by player/NPC on startup, turn based unmoved flag updates, game won text). o Fixed bug in uip_parse_list() that caused input pattern matches to fail against task commands where patterns had consecutive '[...]' or '{...}' elements without intervening spaces; shows up with 'To Hell in a Hamper'. o Relaxed running requirements for sc_undo_game_turn(), sc_load_game(), sc_save_game(), and sc_restart_game(). o Adding RUNNING text file, with notes on running SCARE. 1.3.1 o Added the ability to run Adrift 3.9 games as well as 4.0 ones. o Added code and interface functions to provide the interface with a game's use of sound and/or graphics resources. See PORTING for sc_does_game_use_sound(), sc_does_game_use_graphics(), and for the os_play_sound(), os_stop_sound(), and os_show_graphic() functions. o Many and drastic output message changes in an attempt to align with the Adrift runner for ALR matching (damn you, ALRs). o Implemented player size and weight checks, and container size and contained object count checks. o Added standard responses to game actions such as "jump", "dance", and profanity, giving ALRs something to chew on. o Created "score" and "turn" verbs, "kiss", "smell", "push", "pull", and assorted others. o Added automatic listing of objects in a container when opened. o Implemented listing of NPC objects worn and held on "examine ". o Added first person responses for games that request this mode. o Updated to Zlib 1.2.1, which offers somewhat faster operation. It's distributed in .zip format, so the SCARE Makefile no longer needs to maintain extracted Zlib sources, as it did with the gzipped tar distribution of Zlib 1.1.4. o Fixed a bug in run_player_input() that left unused input line data buffered across game end undo. o Corrected game tidy up after calls to sc_quit_game(). o Corrected checks on object get to reject "get " where the object is either held or worn by a NPC. o Removed TAF line pushback functionality from the TAF file module, and implemented it locally inside the TAF file parser. o Mapped 'font face="courier"' in os_glk.c, os_print_tag(), to Glk preformatted text style. o Improved os_glk.c so that it copes with "buggy" games that do not correctly nest markup tags (for example "mumble ". o Avoided a possible (theoretical) crash where large negative numbers are used in Adrift expressions. o Now silently ignores empty HTML-like tags, "<>"; prior versions would issue a warning. o Use monospaced output in Glk when the game uses either 'courier' or 'terminal' fonts; originally only 'courier' was recognized. This improves performance with 'Humbug'. o Set %text% to the player input line before printing game command error ("dontunderstand") messages, again for 'Humbug'. o Fixed a hang on loading 'The Cat in the Tree' and 'Ice Cream'; thanks to David Kinder for the error report. o Minor fix to kiss NPC message, and corrected "north_west" to be "north-west" in movement command. o Fixed an abort when an NPC with a walk is initialized to "hidden"; thanks to Richard Otter for uncovering the error. o Minor cleanup of input parser error handling, and change in debugger to stop debug refusal from consuming a game turn. o Changed function sc_game_hint_iterate() to sc_iterate_game_hints() for better naming symmetry with other interface functions. o Performance optimizations to scprops.c, giving a 20-30% improvement. o Added error trap for pathological games that define no rooms. o Added %room% variable, accidentally omitted from earlier releases. o Implemented raise-to-power (^) operator in expressions, and fixed a pair of subtle bugs with unary minus and plus operators (incorrect associations, and missing comparisons in unary minus and plus determinations). o Added "lay" as a synonym for "lie", and fixed NPC entry/exit message where NPC enters or exits from above or below. o Fixed %version% to contain values that correctly indicate the level of Adrift runner emulation. o Corrected NPC walk tasks for meeting player, object, and other NPCS; thanks to Robert Goodwin for the error report. o Documented battle system TAF file fields in sctafpar.c, in case the occasion ever arises to implement the battle system. o Minor structure tweaks to save memory via better field alignments. o Fixed a silly bug that failed to enable trace/debugger for Windows. o Fixed a bug that prevented player positions from being set up correctly on game loads; thanks to Eric Mayer for the report. o Added "ex" and "exam" as additional synonyms for "examine". o Corrected handling of argumentless tags, and made a few small performance improvements (strlen elimination). o Upgraded handling of "get", "drop", "get all" and "drop all" command handlers to check for game overrides for each object. o Added a couple of casts to correct gcc 3.3.4 compilation warnings. o Minor tidy up of Glk style resetting in os_glk.c. o Fixed a failure to load Unfortunately.taf; thanks to David Kinder for the report. o Added Glk interface functions to print a status line even if the Glk library in use lacks windowing capabilities (cheapglk). o Added a workround for Xglk resizing problems. It should have no effect on Glk libraries that don't have Xglk's deficiencies. 1.3.4 o Updated the Glk interface to match improvements made to the Glk interfaces of other IFP interpreters. o Fixed errors in quit jump buffer handling across game restore that could cause sc_quit_game() to crash. o Added a "quit" command to the debugger. o Suppressed inflate() error message when trying to restore a file that is not a valid saved game. o Slightly improved sc_str{n}casecmp() efficiency. o Added end-of-file handling to os_ansi.c, so that it's now useful in pipelines and for scripted game testing. o Readability and code style update for the core interpreter, but very few functional changes. (Translation: if you're not using the Glk interface, there is little reason to update from version 1.3.3). 1.3.5 o Fixed a crash caused by using referenced text in task restrictions on the very first game turn (before any referenced text set); thanks to Mark J. Tilford for the diagnosis. o Fixed an embarrassing crash that showed up when entering a line that contained two or more spaces and no other text, and another caused by failure to trap division by zero adequately. o Updated to Zlib 1.2.3. o Reworked game task handling to match the current understanding of how the Adrift Runner selects between multiple tasks that match player input; thanks (yet again) to Mark J. Tilford for the analysis and reverse engineering work. o Fixed a text formatting problem that showed up when examining an NPC that is both wearing and holding objects; thanks to Richard Otter. o Changes to score notifications to match the Runner a little better, and generally behave more usefully. o Implemented Adrift's "count" (alias "num") command, for querying the status of weight and size limitations for carried objects. o Fixed NPC task restriction off-by-one error in the version 3.8 to version 4.0 game conversions done on parsing a TAF file, an object worn task restriction error, and a win/lose game endian problem. o Improved the way tasks are run when NPCs encounter objects and other NPCs on walks, trying for closer agreement with the Adrift runner, and a walk bug that made NPCs move more often than they should in roomgroup walks; thanks to Todd Watson for the report. o Fixed an alternate room description problem, an event timing problem, a task override failure, and a task action ordering issue; thanks to Nick Rogers for the reports. o Corrected the way static objects moved to hidden by events behave. o Fixed a status line display ordering bug that showed up on game end with non-windowing Glk libraries. o Removed the generally useless os_flush() function from the interface. o Fixed a parser bug that prevented optional "{...}" words and wildcards from working correctly if placed last on a list. o Added period to the existing comma to period for characters used to separate elements on a multi-command input line. This improves the match with the Adrift Runner. o Added lower-level game saving and loading functions, to allow interpreters such as Gargoyle to save and load game states directly to files or callbacks. Added "-r FILE" to glkscare to restore a saved game directly the interpreter starts up. o Added a built-in random number generator that will produce a stable and repeatable sequence on all platforms; useful for scripted game testing, it may be selected in place of the platform's rand(). o Improved memory allocations in the parser for better performance, and generally reduced strlen() calls on constant strings throughout. o Improved the printfilter, adding paths without allocate-and-copy for strings that don't use tags or other HTML-like formatting. o Updated event restarting to correctly reproduce Adrift's handling of this situation in version 3.9 and 3.8 Runners (bug compatibility?), and added other general event handling compatibility fixes. o Altered expression handling to accurately reproduce Adrift's rounded division, and also its apparently sequential and/or comparison. o Assorted refactoring and code format and style cleanups, including an effort at NPC accessors and mutators, removal of int16 types, rationalization of use of unsigned variables, and byte instead of short for boolean types. o Made code 64-bit clean (specifically, LP64, but probably also ILP64). o Added a control to allow the player to override the count of turns consumed by 'wait'. This helps with games that set one value but assume another; several Runner releases are broken and always add one to turns on 'wait', no matter what the game requests. o Increased undo from a single turn to 17 total. Added a command history, addressable with '!' (somewhat like the c-shell). o Improvements to 'it', 'him', and 'her' handling to try to better match the Adrift Runner. Also, added an attempt at guessing whether objects are plural or singular, for correct "...is" and "...are" messages. Thanks to David Whyld for the report and test case. o Improved the parser, adding "...object {and object...}" and "...all except object {and object}..." to take, drop, and wear and remove. Rationalized assorted other commands, making "everything" synonymous with "all" and "apart from" synonymous with "[except/but] {for}". o Added a parser extension to logically interpolate %...% variables into task command patterns before matching them to user input. o Fixed getdynfromroom() for task command functions so that it works believably with 'Humbug'. o Added an automated test program, and a suite of test scripts aimed at verifying core interpreter features and regression testing games by comparing against transcripts created by the genuine Runner. 1.3.6 o Removed "move" as a synonym for "go". Having this extra command may confuse games that otherwise expect to override all movement. o Fixed a small object disambiguation bug. o Corrected a problem that occurred when listing objects that would not fit in a container when using multiple object targets. o Improved object disambiguation. The parser should now allow, for example, "drop book" to cope with two books, one held but the other not. Also, tightened "all" object generators to ignore static objects moved to player inventory by events. Thanks to Nick Rogers for the suggestions. o Changed (again) the way game tasks with failing restrictions and library commands interact. It seems that Adrift treats "take" in a special way that doesn't always let a game override, and some games appear to require this. o Added "+percent+" as a '%' character entity. This appears to be an undocumented Runner feature. o Fixed a tricky bug with complex task commands. Yet again, thanks to Nick Rogers for the report and test case. o Minor tidy up and performance improvements.