DESCRIPTION: Well, this is it, another ascii object patch. The flexible file format is similar to that used in ascii pfiles for ease of adding/parsing fields. It also assumes that each item is unique, and compares the values in the individual instance to those in the prototype, saving only the differences in the file. This approach opens the door for "tweaking" individual instances as they load and saving those tweaks in the rent files without the bloat associated with saving every detail of every item. The common desire to "restring" objects is also easily accomodated. REQUIREMENTS: It requires the installation of the widely used ascii pfiles patch as it uses the same diskio functions and one of the parsing functions provided there. INSTALLATION: This should be a drop-in replacement for the objsave.c provided with the stock codebase. CAVEATS: I have not provided a file conversion utility. Installing this *will* require an EQ wipe unless you roll your own conversion utility. Such a utility would be trivial to write (read old-style rent file, write new-style) and is left as an exercise for the reader. The system defaults to using the same filenames for the new files as the original code. This means that any existing old-style rent files may be overwritten and may cause crashes. *All* binary rent files should be removed or renamed before starting the mud after installing this file. This file does not directly support unique objects without prototypes. A simple solution for saving mail would be to create a mail object and modify individual copies of that object in mail.c. This was a design decision based on my dislike for unprototyped objects and desire to avoid the ITEM_UNIQUE flag. If you prefer ITEM_UNIQUE and non-prototyped objects, modify the if statement starting on line 677 as follows: if (OBJ_FLAGGED(obj, ITEM_NORENT) || GET_OBJ_RENT(obj) < 0 || - GET_OBJ_RNUM(obj) <= NOTHING || - GET_OBJ_TYPE(obj) == ITEM_KEY) { + GET_OBJ_TYPE(obj) == ITEM_KEY) || + (GET_OBJ_RNUM(obj) <= NOTHING && + !IS_SET(GET_OBJ_EXTRA(obj), ITEM_UNIQUE_SAVE))) { return (1); } CREDITS: While the file format is new, not all of the code is. Much of the code is taken from Patrick Dughi's Xapobjs patch. The parser and object saving functions are mine. As far as giving credit is due, I don't particularly care, but if you do give me credit, also credit Patrick. Anton Graham