I took all of the bugfixes and patches that go into OasisOLC, 
   put them all into the base code,
      shook them around a bit.
         Made it all work.
            And Made a patch file for ya.

Includes:
   OasisOLCv1.2
   Improved_Oasis_editor.patch 
   oasisolc_v1.3.diff
              < Thanks to the creators to all of these>

  All are put into one patch as well as premade 
                                        olc.h
                                        olc.c
                                        medit.c
                                        oedit.c
                                        sedit.c
                                        redit.c
just pop the files into your src directory
 type : patch < OasisOLC.new.patch
   cross your fingers and compile.

                                          I take no credit for this patch
                                           for all I did was put other 
                                            peoples work into one.
                                          I take no responsibility to 
                                           the damage this code may 
                                              produce.  I do not  
                                                know what your
                                                  code looks  
                                                     like.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
                           - OasisOLC - 
                Rv's Circle 3 On-Line Creation System
                           Harvey Gilpin
                       v1.2 (12/5/96) release
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Contents:

   1  -  Introduction
   2  -  What is OasisOLC?
   3  -  Conditions of use
   4  -  Installing OasisOLC
   5  -  Upgrading to v1.2
   6  -  Configuring OasisOLC
   7  -  Using OasisOLC
   8  -  Fixed bugs since v1.0
   9  -  Known bugs
   10 -  Credits


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
1  -  Introduction

Congratulations on reading this.  If you are anything like me then you've
got hold of your new toy and the last thing you want to do is read
through heaps of junk telling you how to get it working.  However most
of the information in this file is important so I urge you to read it
all before installing anything.



-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
2  -  What is OasisOLC?

First off, the three big "it's" :

  It's written by me, Rv, a.k.a. Harvey Gilpin.

  It's a menu based OnLine Creation system for CircleMUD 3.0.
  CircleMUD was created and is maintained by Jermey Elson.

  It is based on an earlyer OLC system that just included 'iedit' and
  'redit'.  I have been informed the original author goes by the
  handle of "Levork".

I cleaned up and semi-reorganised the redit/iedit code, renamed iedit
to oedit and wrote the medit/zedit/sedit and olc modules.  

IMPORTANT: It is not intended as an all singing, all dancing OLC, but
rather as a damn good starting point.


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
3  -  Conditions of use

1)  If you use this code you must email me to let me know at:

    rv@twylite.demon.co.uk

    (It's not asking much is it?  I'd like to know how many
     people use it)

    Just a quick message saying: "It's crap!  You suck!"
    would do.

2)  You must not use the code to make a profit in ANY way.

3)  Any derivative works must give credit to the original author, 
    Levork, and are subject to the same conditions of use.

4)  You accept any damage caused by the use of this software to be
    your own fault. (i.e. Don't sue me :) 

Harvey Gilpin



-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
4  -  Installing OasisOLC

Although desgined in Circle3.0pl9, this version has been released to
work with pl10 and I've been told it works fine with pl11.  Beyond that,
who can tell?  Anyways, here's how you install it:


FIRST BACK UP YOUR WORLD FILES !  - This system (like all others)
WILL have bugs and WILL destroy your world files from time to time.
Be ready for it.

To backup your world files go into the 'lib' directory and type:
 tar cvf world.tar world
To restore them again, go into the 'lib' directory and type:
 tar xvf world.tar

Most of the code for the OLC system is held in files seperate files
but some circle files do need modifying so that the MUD knows that
it has the OLC atattched to it.  Basically you just untar the files
into your 'src' directory and then apply the patch files by doing this:

patch < OasisOLC.patch

These are the files the patch will affect:
  Makefile, structs.h, comm.c, modify.c, interpreter.h, interpreter.c,
  act.wizard.c, constants.c, shop.h & shop.c 

IMPORTANT: All the changes made to the code are required by the OLC
engine, so if any of them do not work automatically, you will have
to look through the rejected files and change the code manually.



-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
5  -  Upgrading to v1.2

This is just a bugfix version; there are no new features.  So if  you are
upgrading to it from the earlier version of Oasis, all you need do is copy
the new files over the old.  The patch file hasn't changed (much) so you
can more or less ignore that.

However, if you have changed a lot of the original Oasis code and don't
want to write over them with this version, then at least go through the
bugfix list found later in this file so you know what needs fixing.



-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
6  -  Configuring OasisOLC

I have tried to make this system as reliant as possible on the tables that
already exist in the Circle code,  so that when the mud changes, the OLC
will be able to deal with it.  However, the system does need to know some
information about the tables sizes, and those that are not already defined
in structs.h have been placed in olc.h.

If you want the OLC to react to changes you make to tables within your mud
you must update the defines in the top of olc.h.

Also, the system uses colours for the menus, if the player has a colour level
of 'normal' or 'complete'.  If you don't like the colour scheme used,
you can edit the function get_char_cols() in olc.c, and this will
change the colours for the entire OLC system.

If you want to add new features to the OLC, for pointers on how to go about
it, look at the commented out code for object level flags in oedit.c.



-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
7  -  Using OasisOLC

To understand what all the fields in the menus mean, refer to the 
building.doc file that is found in the 'doc' directory of the 
Circle3.0 distribution.

Here's how all the commands for the OLC system are used:

redit				- edit the room you are standing in
redit <virtual room num>	- edit/create room
redit save <zone>		- save all the rooms in zone to disk

zedit				- edit the zone info for the room you are
				   standing in
zedit <virtual room num>	- edit the zone info for that room
zedit save <zone>		- save all the zone info for that zone to disk
zedit new <one>			- IMPLs only - create a new zone.

oedit <virtual obj num>		- edit/create object
oedit save <zone>		- save all the objects in zone to disk

medit <virtual mob num>		- edit/create mobile
medit save <zone>		- save all the mobiles in zone to disk

sedit <virtual shop num>	- edit/create shop
sedit save <zone>		- save all shops in zone to disk.

set <player name> olc <zone>	- IMPLs only - allow player to edit zone.

olc				- List all the things that have been edited
				   but not yet saved.

WARNING:  This OLC will let you set values to values that shouldn't be
set.  For example, it'll let you set a mobile with a GROUP flag.  This
is good in the sense that it allows you to test anything you please,
but bad in the sense that builders can crash the mud with ease.
(Hey, that rymes!).  In short: only allow builders you trust to use it.



-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
8  -  Fixed bugs since v1.0

The original release was pretty stable, and only has a few major bugs.
Most of the fixes are just sanity checks, but for those that are
interested, here's what's been changed:

Major bug fixes:

o  ALL the save_internally routines had a fence post bug in that goes
   one step to far each time, and corrupts memory at the end of the
   new table it is creating.  On strict systems this caused protection
   faults, and no doubt caused weired errors on others.

o  medit_save_internally didn't check to see if the chars in the
   character_list it was updating were mobiles.  Hence, the IMPL
   could get overwritten with Puff's strings.  *snicker*

o  ALL the save_to_disk functions needed to check for NULL values
   in all the strings the saved.


Minor bug fixes:

o  Default position for mobs defaults to 'standing'.

o  sedit, types list needed to be extended to 15 characters make room
   for LIQ_CONTAINER flag name.

o  zedit, changing 'top' of zone did not flag the zone as being changed.

o  ALL string edits that use more than one line didn't flag what was
   being edited as being changed.

o  sedit, the compact rooms list would not return to the long rooms list.

o  zedit_disp_arg3, type of 'container'

o  zedit, pressing command after choosing 'New Command' bailed  out.

o  sedit, namelist for buy types was screwy for non-Linux systems.

o  oedit, object values needed clearing before editing as old values
   from previous edits were being left there.

o  oedit, scrolls an potions didn't allow NULL spells.

o  Added a LVL_BUILDER setting for easy configuration.

o  zedit_disp_menu function needed to check for a NULL zone name.

o  Changed strdup() to use Circle's own str_dup throughout

o  Changed "== IMPL" comparisons to ">= IMPL" for muds with more levels
   than just IMPL.

o  Changed the typo of "db.c" to "db.h" in the Makefile for the *edit.c
   dependencies.

o  olc.c, strip_string() optimised.

o  Some other stuff I never bothered to write down...



-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
9  -  Known bugs.

Like most software, this system has bugs.
Here are those that I know of:


Access to zone 0 bug

Initially, all your GODs will have edit access to zone 0 (limbo).
You may want to set thier olc flags to -1 by default.


Extended mob bug.

Due to the way Extended mobs are implemented it is impossible to
know what individual MUDs do with them.  So when medit writes the
mob files out to disk it can only deal with those it knows about.
Any other one that were there get _erased_.  If you want to use extended
mobs in your mud you MUST edit the medit_save_to_disk() function in
medit.c so that it knows how to save them.


Zone header info

If two builders change the zone header information (zone name,
reset type, etc) at the same time, one of the changes will be lost.
No big deal.


Object weight:

Objects that have there weight changed will mess up with the weight that
players currently in the game owning that object can carry, until they
rent.


Add new zone:

This seems to be buggy for some users, but I can't find what's wrong with
it.  Also, it doesn't check to see if it will overwrite any existing files,
only that the zone does not already exist in -MEMORY-.
Be carefull with this command.

Flying monitor bug:

Throwing your monitor out of the window while using Oasis will break it,
unless you are on the ground floor and have several matresses carefully
positioned outside the window.


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
10 -  Credits

Finally,  I'd just like to thank the following for thier bug reports,
ideas and feedback:

  Adam Days
  Chris A. Epler
  Edward Almasy
  Paul Jones
  Con (a.k.a Rasmus)
  Sean P. Mouncastle
  Trevor Man
  Ryan A. J. Biggs


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
