This is revision .05 of the OLC code for circle 3.0.  It is now based on 
circle patch level 9.  If you've got an unmodified copy of circle 3.0 
patch level 9, the included files are direct replacements for the stock 
files.

Release .05 is mostly bugfixes, with some cleanup/rewriting of several 
functions.  It has also been ported to circle patch level 9.

Users of obuild .03 or .04 can upgrade by getting the new act.build.c 
file.  No other changes are necessary.  .05 is functionally identical to 
.03 and .04, but is amller, cleaner, and more stable.

Users of obuild .02 and previous versions will need to change several 
files, including structs.h, db.h, config.c, and interpreter.c.  Upgrading 
to .05 will give you the zone editor.

NOTE:  If you get the new act.build.c and install it in an older version 
of circle (pl8 or previous), you'll need to delete two lines near the 
beginning of act.build.c.  You'll see where I mean as soon as you load it 
into an editor.

Release .04b has the following improvements over .03:

* Fixed door and remove command saves
* Fixed an old room editor crashbug
* Made other minor bug fixes
* Eliminated over 300 lines of code
* Added an option to view a range of zone commands

Release .03b has the following improvements over .02:

* Small bugfixes
* Builder permissions are loaded into memory on demand
* Support for zones with more than 100 vnums of each type
* The zone editor!

I've included a Makefile with this release.  It is not meant to be a 
direct replacement for your Makefile, since it was generated by running 
configure on my machine.  Look for act.build in the included Makefile and 
edit your Makefile to match.

I also added a short introduction to editing zone commands.  The zone 
editor is nowhere near as flexible or as user-friendly as I'd like, and 
I plan on improving it in the near future.  Until then, it should be 
just fine for most builder needs.

The new zflags option:

Typing "zflags <command number>" will list every reset command, starting 
with command #<command number>.  "zflags <min> <max> will list every 
command from <min> to <max>.  Using either of these options allows you to 
view a range of commands regardless of room or zflag options.

Note:

There's an option in config.c by the name of comment_zone_file.  This 
defaults true and causes all mob and object commands to be saved in the 
zone file with their short descriptions.  If you're short on disk space, 
change this variable to FALSE.

KNOWN BUGS IN THE ZONE EDITOR:

I've experienced a crashbug that I can't seem to track down or even 
produce consistently.  It sometimes happens when using zload, and 
sometimes when zones reset.  There's no useful debugger output in the 
core file, and the reset commands appear to be what they should be when 
this happens.  If anyone has any new info to add to this, please mail me.

Also, I've noticed that sometimes the zone I've been saving gives me 
errors on some object loads when booting the mud.  It says there's an 
invalid vnum, and says the offending command is disabled, but the command 
is actually still valid.  I started noticing this after I started putting 
extra spaces in the zone file to make it more readable.  It seems like it 
could be caused by the extra spaces, but other commands are ok.

Note that when designing the editor I based it on the building.doc file I 
got with patch level 8.  There are some inconsistencies with the existing 
code.  The one that stands out is the object stat supplied in 
act.wizard.c.  The "name" in the stat is actually the short description 
and the "alias list" is actually the name (namelist).  You'll probably 
want to either change do_stat_object or the object editor to avoid confusion.

Also note that stating the mob you're editing ("mstat" with no argument) 
will produce some confusing results.  Circle uses hit/mana/move to hold 
the mob's hit dice until the mob is actually loaded into the game.  
You'll notice that f you set the mob's hit dice to 2d5+30 and mstat it, 
you'll notice 2 is in hitpoints, 5 is in mana, and 30 is in moves.  You 
could change the mstat function to load a mob, stat it, and extract it.  
You could also make a slight change to the do_stat_character function to 
show the mob's hit dice when maxhit is 0 (the value that tells circle the 
hp/mana/move are hitdice).

You may want to change some of the security around, to give features to 
lower lever imms, or take features out.  Implementor-level imms can turn 
the room and mob editors on or off.  They both default enabled when the 
mud boots, but if you're having trouble with them you can have them 
default off so you can control when they're available.  Use zedit 
allow/deny to toggle room editing, and medit allow/deny to toggle mob 
editing.  You might want to add the status of them to "show stats".

I've also included new_help, which you can add to wizhelp.doc, or 
help_table, or wherever is appropriate.  In my experience the help 
included in the code is usually all your builders will need.  I've also 
included olc_faq, which I threw together to handle the common questions 
and make my life easier.  If you make sure each f your builders has a 
copy of it, it'll make your life easier too.  Mobs haven't been added to 
it but will be sometime soon once I get some more feedback.  Also remember to 
give each of them a copy of building.doc (the one that came with the circle 
distribution), because all my code was written under the assumption that 
the builder has a copy handy.

Known bugs:

As far as I know there are only a couple of annoying bugs which I haven't had
time to track down.  One is the ^M's you'll see building up in some of the
output files.  As soon as I get a little better at text manipulation I'll 
squash those.  

I've seen two instances of "zedit save" crashing the mud.  When this 
happened,  the wld file being saved was lost.  I threw in a safety net to 
keep this from screwing things up too bad.  When you save your rooms, it 
creates a backup file (ex: 30.wld.back) so if the wld file is empty, the 
mud will boot the backup and copy it to the orginal file (30.wld).  I 
haven't seen this bug in months, and I think it had something to do with 
changes made that are specific to my mud, but I'd suggest keeping the 
back files just in case.

Saving mobs and objects that are loaded in the game has some weird 
affects.  For example, if you load a fido and give him a meat, then edit 
the fido and the meat and save both, the ones you loaded may have their 
names changed.  Usually you'll get something like "the corpse of the drunk"
with "the corpse of the janitor" in it's inventory.  It's a pointer 
problem and I'll fix it soon, but until then I'd suggest purging all 
online copies of a given mob/object before saving new versions.



Please send all comments, suggestions, and bugs to:

samedi@clark.net
 
If you'd like to be put on my support mailing list, send mail me and 
request to be put on the list.  No listserver commands to know, since I'm 
running it by hand.  It's a one-way list, so I can announce bugfixes etc.

If you use this editor in a public mud, please credit 'Samedi' where 
appropriate.  I can't promise any technical support, but I'll help as much 
as my time and patience allow :)

Sam