Ok, I've started a changelog! IMPORTANT - Changed behavior from hugolib! Here is a list of things that may possibly break old game source * vehicles have new code for leaving and trying to move (check out roodylibdocs.odt) * more reach checking for interactions with objects that have parents TO DO LIST (for future versions): * clean up ListObjects a bit * possibly create a helper routine for applying/clearing already_listed from children of objects * make HugoFix parser-checking output prettier? * might integrate other libraries into Roodylib, like follow,h, opportune.h, and newcango v 4.0 - * Added some new constants for some new FindObject/Parse stuff * Incorporated cheaplib.h, beta.h, footnotes.h, scorenotify.h, newboxdraw.h, into Roodylib * Updated AnyVerb, AssignPronoun, CenterTitle, YesOrNo, HugoFix stuff, EndGame, DoMoveInVehicle, DoOpen * Updated DoLook to clear already_listed from children of parents and WhatsIn to have an option to be called so it doesn't clear already_listed * Added QuitGameText routine * New disambiguation code * Stronger NPC order parsing * Hopefully better ParseError responses * A lot of FindObject reorganization * VerbCheck routine for identifying verb words vs. noun/other words. * Tweaked word-array setting save system * Made PreParse and PreParseInstructions separate * added command-printing code for multiple-command lines * Updated a bunch of xverb stuff, including command recording/playback * Better description of the benefits of NEW_STYLE_PRONOUNS * Fixed a mistake in the it_object from NEW_STYLE_PRONOUNS * Added support for multiple PCs (in a game that switches characters) who visit the same rooms and interact with the same objects (check MULTI_PCS section of roodylib.h) * Updated the included shell files * Added BRIEF, SUPERBRIEF, and VERBOSE constants for easier verbosity checking * Updated PrintStatusLine system * Updated HoursMinutes * Added ROTATE_DESC and NEW_ROTATE for quick description rotation * Changed how CoolPause works * Added GetNumber routine for turning a word into a number v 3.9 - * updated ObjectIs and TestObjectIs * small fix to CheapTitle * updated CenterTitle to work with the NO_MENUS flag * changed "skip" local variable in DoGo to "skip_ahead" since newcango.h already uses a SKIP constant * added AUTOMATIC_EXAMINE and LIST_CLOTHES_FIRST switches * updated code so characters have holding properties automatically and a substitute global is used for containers without them so authors aren't punished for not remembering to supply them * added extra supercontainer code to CheckReach, FindObject, DoExit, and DescribePlace * fixed mistake in CurrentCommandWords * moved ListObject's constant printing (IS_WORD, etc) to RLibMessage for easy replacing * better character name listing if there are multiple characters in the room * changed HugoFix's object tree listing (now skips replaced objects by default) * added "HugoFixInit" menu for setting debugging flags before the game has begun * added screen-size-change code to EndGame * various changes to grammar, ExcludeFromAll, verbheldmode, ParseError, and DoGet for better handling with clothes * added AnythingTokenCheck to FindObject for more control when using anything token grammar * changed "rank" local variable in PrintScore to "temp_rank" * defined settings objects as type "settings" * moved some PrintStatusLine printed text to RLibMessage for easier changing * HugoFix, when on, tries to organize the object tree at the start of the game for easier reading * lowered the time it takes to redraw the screen in ReDrawScreen and now uses InitScreen for consistancy * Changed some of the supercontainer object code itself * updated PrepWord to accept multiple words * gave names to replaced class objects * isolated DoEmptyGround from DoEmpty so authors can write before routines specific to it * changed order of checks in DoGet, more parent(object) code and clothing stuff * created an AssignPronounsToRoom (defaults to returning true) that allows you to disallow pronouns being set to that room (when it returns false). also created an exit_type global that keeps track of the type of exit used to get to the room (direction, door, non_door_portal). I think my thinking was that if the player types >GO RED DOOR, it'd be jarring when they see the pronoun set to something else. maybe this idea sucks. I don't know! * cleaned up children listing for certain instances in DoLook * added "object = -1" to things like DoLookIn, DoLook, and DoOpen so pronouns get set nicely * added an Infocom-esque "Continuing on." message to canceled DoQuits, DoRestarts, and such. * added a default response for trying to remove clothes from other characters. "so-and-so doesn't let you." * CoolPause now defaults to bottom-oriented text. put a value in the second routine argument to put it in the statuse line. * changed "PauseForKey" to "GetKeyPress". basically just prints and optional prompt and uses HiddenPause to get a keypress value. * created a SpeakerCheck routine so you don't have to put too much speaker-checking code in your main routine. if your game needs to do speaker-checking beyond "speaker in location", you can replace SpeakerCheck to fit your needs. * Added Kent Tessman's Future Boy! "time.hug" routines to Roodylib. set #USE_TIME_SYSTEM to use. * added #FORCE_DEFAULT_MESSAGES flag to keep old DoLook behavior * added a default auto-generated DoVersion routine for quick set-up. set #NO_VERSION to turn off. v 3.8 - * Added an "elevated" attribute for vehicles enterable platforms (such as ladders) where "down" is an accepted exit direction * Changed the vehicle class again (check out roodylibdocs.odt) * Added USE_SMART_PARENTS flag so if the player tries going into an invalid direction while in an enterable object, they get "You can't go that way." instead of "You'll have to get up/out." * In doing so, updated DoGo, and the vehicle and door classes to support it * Added SKIP_DOORS flag so player can breeze through unlocked doors without opening them like NPCs * Added a HugoFix settings object so debug monitor settings are kept after a restart * If daemon/fuse monitoring is on (in HugoFix), a prompt asks whether to run the relevant daemon/fuse (to make it easy to skip during testing, if wanted) * Got rid of an unnecessary AUX_MATH routine call in printstatuslib * Made sure Roodylib is more NO_OBJLIB, NO_VERBS, and NO_XVERBS compatible * Added USE_DARK_ROOM flag so dark rooms appear like an actual room when you enter them (check out roodylibdocs.odt) * Updated flags.h to include new flags * Update "go" grammar * Added the coverart extension to Roodylib because of its configlib compatibility * Updated old files to have UNIX line feeds and fixed indenting on older code v 3.7 - * Added CallFinish, MakePlayer, CoolPause, PauseForKey routines * Updated shell files to make it easier to turn Roodylib off (for tracking errors down to original library code) * Updated credits text v 3.6 - * Added DoOpen replacement * Fixed a ParseError bug (caused by me, not original) * Added DoGet replacement, updated CheckReach for dealing with instances where the player is in a closed enterable object and is trying to get something else in the same object v 3.5 - * Fixed a bug in DoExit where "X is closed." wasn't printing properly * "kick" now points to a DoKick routine (which directs to DoHit by default) * Added "smash" to DoHit * Got rid of unneccessary RLibVMessage routine * Updated DoGo replacement to not say "You can't enter that" when go-ing at an unenterable object. Instead, it says, "the object is here." v 3.4 - * Updated DescribePlace so it can be called without arguments * Found another USE_PLURAL_OBJECTS DescribePlace bug in the NEW_DESC stuff * Updated SpecialDesc, WhatsIn, DoTakeOff * Checkheld versions of DoWear and DoTakeOff * Updated FindObject, ExcludeFromAll, VerbHeldMode, SpeakTo, CheckReach * DoLookIn no longer requires container grammar (now works with non-container, transparent objects) v 3.3 - * Fixed a bug where the 'bottom justification' code in WriteStatus was causing [MORE] prompts in Gargoyle * added display.needs_repaint-clearing code to InitScreen * PrintStatusLine always does Infocom-style statuslines (a space to the left and right) to force compatibility with DOS terps * Tweaked some MovePlayer stuff * MovePlayer no longer calls PrintStatusLine since I figure it'll be called by main at the end of the turn. Might changes this back if it causes a lot of problems. * Added a NO_FANCY_STUFF switch which forces older-style PrintStatusLine's and turns off some other fancy stuff. Really, I added this while trying to troubleshoot something where Roodylib code ended up not being the culprit, so I'm not sure if I can recommend it or if it'll stay in. v 3.2 - * added a missing printed bracket in parser monitoring code * added NEW_EMPTY system for more container/platform-emptying options * added AMERICAN_ENGLISH flag to switch between quotation punctuation styles * added NEW_DESCRIBEPLACE to give more DescribePlace options * added WhatsIn replacement and ListObjects RLibMessage-call for more printing options * updated CenterTitle to not draw extra window in simple, non-Glk terps * Fixed some places in the supercontainer class that didn't work right with transparent supercontainers. * Fixed a problem where non-door items with door_to properties weren't being accepted by DoGo. Probably still some perfecting to do on this one. * Attachables DescribePlace code was missing some parentheses. * Added default message for taking objects from friendly (non-unfriendly) characters * Non-quiet scenery platforms now should now default to listing contents in room descriptions. v 3.1 - * Added Supercontainer object class code. #set USE_SUPERCONTAINER to include. * Added NEW_FUSE code * fixed ClearArray memory-hogging bug * tweaked PrintStatusLine code to not loop when there is only one printstatuslib child * SetUpDirectionObjects isn't run so often v 3.0 - * Changed some DoGo code and grammar to allow "go out/off of " * Added "config_sys.h", a configuration file manager (helps games write data to one file instead of several). Sort of experimental but hopefully it's ready for release. Colorlib has been updated to use it, even if it's currently a bit ugly. v 2.9 - * Added Object Sorting section to complement ListChildren routine * Fixed CalculateHolding bug * Fixed DoUnlock/DoLock. some messages weren't called correctly and now it makes sure that keys are available (and not in a closed box or something). * Added ability to string manipulation to write the results to a second array (instead of overwriting the original array) * Added optional NO_LOOK_TURNS flag to quickly allow games where DoLookAround, DoLook, DoLookIn, and DoLookThrough do not take a turn. * Added some object-picking code to extraroutines.hug to make it easier to pick objects/elements from parents or arrays based on routine-based criteria v 2.8 - * Made characters default to having exclude_from_all true * Added a ClearArray call to FindStatusHeight to prevent room from being printed twice in statustype-less games * Updated rdyshell to call flags.hug, switchgram.g, and inclusions.h * new "New Style Pronouns" and "Routine Grammar Helper" sections added v 2.7 - * Added ROODYBANNER and ROODYVERSION constants to make it easier for games to proclaim the Roodylib version in DoVersion and/or the game title segment, if they choose. * Added default "XYZZY" response so Hugo authors aren't bugged to provide responses. * Use the NO_XYZZY flag if you'd like to turn it off. * Added USE_EXTENSION_CREDITING section for listing included extensions in CREDITS responses * Added a status_top property to the printstatuslib system so status windows can coexist with graphical windows in multimedia games (status_top should equal the top row number of the status window) * Added asterisks to section headings to make it easier for my text editor (EditPlus) to jump to sections (so now I can set my Function List search to look for lines that begin with "!*") * Updated PropertyList, ListObjects, and PrintArrayList (the last is in extraroutines.hug) to add optional "conjunction" argument, so object listing can be a means of providing choices. Created ListChildren routine which sets the list_count global so ListObjects works correctly in such cases. v 2.6 - Modified DoUndo so it resets verbroutine to &DoUndo after successful UNDO ( a successful UNDO changes the verbroutine to the routine that was successfully UNDOne, but that leaves the door open to after and react_after properties being run again) changed "test" local variable in RedrawScreen to something less generic updated CenterTitle to work with strings bigger than screen width tweaked some door code, Updated PrintScore to give the top ranking in games even when score surpasses MAX_SCORE (so ranking still works in games with broken scoring or games with extra easter egg points) v 2.5 - Added NO_AUTOMATIC_DOOR_UNLOCK flag for disabling door-auto-unlocking (that is, doors that your player automatically unlocks if you go in their direction with the proper key) Fixed status-window-clearing code in DoUndo v 2.4 - Cosmetic release. Organized roodylib, grouping similar routines. Moved uncommonly-used routines to "extraroutines.h" file. #set USE_STRING_MANIPULATION to use string manipulation routines #set USE_AFTER_UNDO if you want after_undo array capabilities (others- NO_SORTING, USE_ROLLABLES) v 2.3 - Improved ProcessKey routine, added "checkheld_holder" object, fixed DoGo problem ("A bit redundant, don't you think?" wasn't getting called) Created ClearWordArray routine Added ClearWordArray calls to DoUndo and DoRestore Found a huge Hugo bug where multi-line xverb definitions only understand the first line as xverb. Now roodylib pre-declares the xverbs and splits them all into one line definitions. Changed the DoEnter grammar definition so it made use of some unused code in DoEnter Tweaked DoEnter V. 2.2 - Added an improved door class and RlibOMessage, a Roodylib object message routine Made DoListen and DoSmell give non-helpful responses to objects pre V. 2.1- Who can remember?