ldmud-3.2.9/doc/
ldmud-3.2.9/doc/efun/
ldmud-3.2.9/mud/
ldmud-3.2.9/mud/heaven7/
ldmud-3.2.9/mud/heaven7/lib/
ldmud-3.2.9/mud/lp-245/
ldmud-3.2.9/mud/lp-245/banish/
ldmud-3.2.9/mud/lp-245/doc/
ldmud-3.2.9/mud/lp-245/doc/examples/
ldmud-3.2.9/mud/lp-245/doc/sefun/
ldmud-3.2.9/mud/lp-245/log/
ldmud-3.2.9/mud/lp-245/obj/Go/
ldmud-3.2.9/mud/lp-245/players/lars/
ldmud-3.2.9/mud/lp-245/room/death/
ldmud-3.2.9/mud/lp-245/room/maze1/
ldmud-3.2.9/mud/lp-245/room/sub/
ldmud-3.2.9/mud/lp-245/secure/
ldmud-3.2.9/mud/morgengrauen/
ldmud-3.2.9/mud/morgengrauen/lib/
ldmud-3.2.9/mud/sticklib/
ldmud-3.2.9/mud/sticklib/src/
ldmud-3.2.9/mudlib/uni-crasher/
ldmud-3.2.9/pkg/
ldmud-3.2.9/pkg/debugger/
ldmud-3.2.9/pkg/diff/
ldmud-3.2.9/pkg/misc/
ldmud-3.2.9/src/autoconf/
ldmud-3.2.9/src/bugs/
ldmud-3.2.9/src/bugs/MudCompress/
ldmud-3.2.9/src/bugs/b-020916-files/
ldmud-3.2.9/src/bugs/doomdark/
ldmud-3.2.9/src/bugs/ferrycode/ferry/
ldmud-3.2.9/src/bugs/ferrycode/obj/
ldmud-3.2.9/src/bugs/psql/
ldmud-3.2.9/src/done/
ldmud-3.2.9/src/done/order_alist/
ldmud-3.2.9/src/done/order_alist/obj/
ldmud-3.2.9/src/done/order_alist/room/
ldmud-3.2.9/src/gcc/
ldmud-3.2.9/src/gcc/2.7.0/
ldmud-3.2.9/src/gcc/2.7.1/
ldmud-3.2.9/src/hosts/
ldmud-3.2.9/src/hosts/GnuWin32/
ldmud-3.2.9/src/hosts/amiga/NetIncl/
ldmud-3.2.9/src/hosts/amiga/NetIncl/netinet/
ldmud-3.2.9/src/hosts/amiga/NetIncl/sys/
ldmud-3.2.9/src/hosts/i386/
ldmud-3.2.9/src/hosts/msdos/byacc/
ldmud-3.2.9/src/hosts/msdos/doc/
ldmud-3.2.9/src/hosts/os2/
ldmud-3.2.9/src/hosts/win32/
ldmud-3.2.9/src/util/
ldmud-3.2.9/src/util/erq/
ldmud-3.2.9/src/util/indent/hosts/next/
ldmud-3.2.9/src/util/xerq/
ldmud-3.2.9/src/util/xerq/lpc/
ldmud-3.2.9/src/util/xerq/lpc/www/
Heaven7 v3.1.1 

Final Release
Code Name: "Redemption"

(c) January 2001

by

Matthew 'Angel' Hodgson, Derek 'Adept' Baron, Neil 'Sarak' McBride and Ray 'Zilanthius' Gilbert


DRIVER VERSION
Amylaar, Compat Mode, 3.2.1@136


MUDLIB VERSION 3.1.1
No MS-DOS Driver Support
No Native Mode Support
No MUD-OS Support
No DGD Support


CREDITS

Original Concept
	Zilanthius & Angel

Backbone & Security
	Adept & Sarak

Bin System
	Adept, Sarak & Angel

Playing Environment
	Angel

The City of Ille Coronos
	Coordinator: Alena
	Programmers: Darkness, Newstar, Relgar, Vorax & many others.

The Island of Minos
	Coordinator & Programmer: Sarak

Contributing Programmers / Creators
Dargoth, Dianna, Octavian, Dugal, Faras, Kane, Kaza, Laen, Monger, Mylon, Newt, 
Quanstef, Ramies, Ruby, Taliesyn, Terral, Timune, Union, Wayner, Winter and Xane


FOUNDER'S NOTES
Special thanks goes to Alena for her continued support during the many
years I've worked with her on the H7 project. I could not have done it
without you.


WEB SUPPORT

H7 Website: http://users.hunterlink.net.au/~demrh/heaven7

H7 Discussion List:  http://h7development.listbot.com
H7 Discussion Email List: h7development@listbot.com 

H7 Founder Email: ravenloft@hunterlink.net.au


			------------

FORWARD

You know I am constantly surprised by the number of emails I get, even
since I have not had an operational H7 development site for nearly 2 years.
People still email me with problem on setting up, or with questions about
various aspects of the lib. It is for these people that I'm releasing this 
version of the H7 mudlib, Redemption.

This release version of H7 has been a long time coming. With all the changes
in my life (graduating, marrage, moving interstate, getting a real job with
the Australian Commonwealth Government and assisting with various department's
online strategies), and the number of skilled programmers I've had to work 
with (or lack thereof), getting this one out has been like giving birth. 

This version has actually been sitting around on an archive CD for nearly 
18 months, and little development work has been done since that time. Today,
I've finally gotten around to unpacking it, removing all those nasty log, 
player and mail files, and packing it back up and posting it up to the ftp sites. 

This is the last version that I intend on releasing. Those who have seen 
this version and are using it will tell you that it works straight out of 
the box. With that said, the availability of platforms to test this version 
on were extremely limited. If it doesn't work first time on your site then 
there's not a lot I can do, particularly since it's been so long since I've 
actually coded for this lib. 

If you do get stuck, join the H7 development mail list (at last count there
were 28 people on the list). Visit http://h7development.listbot.com and send 
an email message to h7development@listbot.com ...even I'll get this mail! Hopefully,
the list will generate a lot of discussion on aspects of H7 and assist those who
are trying to build their own muds. 


			------------

THE RELEASE OF REDEMPTION

There have been a lot of critics in the past, self-proclaimed experts on this
mudlib, who believe they know the system like the back of their hands just by
unpacking it, briefly examining the contents and hitting it with the oldest of
security hacking routines. Their comments don't mean a lot to me. They claim, 
like on Mozart's symphonies, that is isn't good because it has 'too many notes'. 

One thing that I have always been pround of is the quality of the player
support. This is H7's strength. Redemption takes that one final step. 
It is a lib designed primarily to offer a a comprehensive class-based 
system that permeates every aspect of play. 

No more will you find player's can't protect themselves from monster's
spells, or from other players. A thief can truly hide in the shadows, and
a warrior can have excellent weapon skills without having to have someone
code 'bash' as a massive damage spell-like ability. 

As a back-bone for an AD&D-like system, H7 has no rivals in Amylaar/Compat
circles. In particular, the advent of the 3rd edition DND by Wizards of 
the Coast, this lib shows great promise for those who want to build their
mud along side that system. 

Yes, it has other features, and some like it primarily because it supports 
Amylaar's drivers, and is probably the only LPMud that still looks and feels 
like an LPMud.

We've also produced a web site for information regarding the mudlib,
drivers, and other such things at users.hunterlink.net.au/~demrh/heaven7
Drop by there. Suggestions and submissions to the site are always welcome.

I hope you enjoy this release as much as we did producing it.

Thanks :)
The Team at Heaven7


			------------

NEW FEATURES v3.1.1

* Bin System
* Enhanced Security
* New Classes & Sub-Classes
* New global Channel System
* Intermud protocol support through channel system
* Long Awaited Keeps System
* Affiliations & Clans support
* In-Character/Out-of-Character roleplaying areas
* New city with newbie support
* Sailing ship support for 'island' areas

* 3rd Edition DND ready

			------------

DRIVERS

Redemption has been tested on an Amylaar 3.2.1@136 and is designed to 
operate under this environment. If you use a different driver
we can not guarantee the lib will be free of problems. 

Since v3.0a we have ceased support for mudOS. It should be remembered that H7 
is not a mudOS mudlib, and is designed to operate in compat mode. If you wish 
to use this driver, then we can not offer end user support or guarantee its
stability.

The mud is designed to operate under compat mode, not in native mode. If 
you configure your driver for native mode it will not work 'out of the box'.
A great deal of modification will need to be done in order to get it operational.

This mud will not operate very well under the MS-DOS Amlyaar drivers. I've not yet
found a suitable 3.2.1 compat mode driver to port the system to so creators can
edit and test from home. If you know of one, let me know?

Sarak has successfully (with a great deal of work) ported H7 to DGD. It is unknown
at this stage as to whether or not Sarak intends on releasing this version of H7, 
or whether he will go ahead with the release of his own mudlib. If anyone finds out,
or knows where I can find Sarak, please let me know?


			------------

INTERMUD

Whereas previous versions of H7 used Nostradamus's Intermud protocalls, v3.1.1
uses the Intermud standard utilised by mudOS and other mudlibs. It is
integrated on a low level into the mudlib, and uses the channel system
to send and receive channel messages. 

			------------

REDEMPTION SECURITY

H7 security is a little tighter in 3.1.1. Several holes identified in 2.07 by
affiliate muds have been cleaned up. 

It should be stressed that a balance between usefulness, trusting of creators 
and necesity has been attempted to be created in this release.

Player and Creator objects are separated so that you won't ever have to worry about
players being patched to become creators themselves.

Bins are not used for certain commands and are contained as actions in the creator
object. This means that commands that are potentially risky (patches on security 
level, for example) can only be performed by the creator himself.

Basically, the security is designed to be as simple as possible. Essentially, 
only the caller and the previous object are queried in order to locate 
whether the caller is a valid one. 

This is done for several reasons:

1) simplicity;
2) no big lists or stacks have to be interogated; and 
3) this saves time and memory

This has the following disadvantages:

1) "wizard tools" can't be made to perform some tasks


The following are typical examples of how security is normally broken:
1) the use of a room init()

a. An creator wizard walks into a room, the room is initialised, the room makes 
the creator perform a special task like promote someone to a creator, or to 
patch someone's details.

b. H7 performs a query on the previous object, which results in the room being
denied such an action ('cause it's only a room)

c. the function is denied.

Similarly, some command actions can not be set as aliases. This is because aliases
actually 'command' the player to do something using the command function. This goes
for players as well. For example, the kill commands is static and can not be 
called externally. This means that players can't be commanded to kill each other (which
is a good thing), but they can't make aliases to kill a monster. 

If you really get desperate, there is also a special flag (PARANOID) which can be set. 
This will only allow functions to be called by creator and player objects only. 
No outside calls to security functions will operate under this flag. Also, the ADMINs
and higher will be about the only ones who have decent access across the entire mud. 

Additional security to creator's personal coding folders can be modified through
the access.c object in the root folder. Here, the creator can grant access to someone
who doesn't normally have access. This way, he can work with others without having to
alter the security of the whole mud. It is up to creators themselves to decide what
access to give to others. It can't, however, give read/write access to players, nor
can it deny access to someone who has access to it under the rights of the mud's 
underlaying security (i.e. you can't use an access.c object to deny access to 
an administrator)

Overall, the security should be generic enough for you to modify yourself and to 
tighten in those areas you best see fit. If you want to change security, modifications
can easily be made to the secure.c and wizard.c objects. 

If you know of a security hole in this release, please notify ravenloft@hunterlink.net.au

			------------

GETTING STARTED WITH REDEMPTION

Download your driver and unpack it. The driver files will direct you
as to what directory you will need to put the mudlib in. If you use
the same driver as we have the mudlib (3.2.1@136) will work 'out of the box'.


* Parse Command

Newer versions of Amylaar are designed to work in native, rather than 
in compat mode. As a result, the parse.c object was rewritten. Unfortunately,
this meant that compat mode mudlibs suffered. 

Redemption has made use of the parse_old.c object with a few modifications as 
seen below. If you do not use this code then the natural english parser with
Redemption will not work effectively.

Locate the parse_old.c object with your driver as below:

/* Find match to %p in pattern
*/
int findprepos (cmd)
    char **cmd;
{
  char *w;
  static char *hard_prep[] = {"on","in","under",0};
  SVALUE *v;
  int cnt;

  if (gForprepos) {
    v = gForprepos->u.lvalue;

    if ((v != 0) && (v->type == T_POINTER)) return findword(cmd,v);
  }

  /* No wordlist sent, use hard coded prepositions and return a string
  */
  w = lookfirst(*cmd); lowercase(w);
  cnt=0; while (hard_prep[cnt]) {
    if (strcmp(w,hard_prep[cnt])==0) {
      getfirst(cmd); /* Skip this word */
      if (gCarg) {
        sv_tmp.type = T_STRING;
        sv_tmp.x.string_type = STRING_MALLOC;
        sv_tmp.u.string = string_copy(w);
        transfer_svalue(gCarg->u.lvalue, &sv_tmp);
        return 1;
      }
    }
    cnt++;
  }
  return 0;
}

You will then need to alter the following:

  static char *hard_prep[] = {
        "in", "from", "on", "under", "behind", "of", "for", "to",
        "with", "at", "off", "out", "down", "up", "around", "over",
        "into", "about", "inside",0
  };

This will give you all the prepositions you need to make the bin
system for natural English work effectively.


* Evaluated Loops

The mudlib uses many loops in some instances, like the help files, or
even in re-evaluating the number of items a player can carry. The file
that uses the most loops is the tracker object, which can map an entire
area (very useful!). 

To use these routines effectively, you'll need to change the number
of loops the driver can do before it gets a too long evaluation message:


/* Maximum number of evaluated nodes/loop.
 * If this is exceeded, the current function is halted.
 * ls() can take about 30000 for large directories.
 */
#define MAX_COST        900000


This is the number of loops that MAGIA, Heaven7's primary mudlib, uses.

Then compile the driver and log in.


* Logging In

You won't be able to patch a creator file from within the mud, security
prevents that. You'll have to do it externally. 

1) Login a character you want to make into the mud's founder
2) Edit your character file and change the security_level integer from 0 to 100. 
   100 is called the FOUNDER, which is who ever the machine or mud owner is. 


Security levels range from 10 to 90. 90 and 100 have the same access,
just a different title. Players have security access level of 0. The
docs and manuals will explain the security levels a little better.



			------------

WEB PAGE SUPPORT FOR REDEMPTION

Heaven7 has a web page devoted to links to other H7 muds. If you use
H7 we ask that you place the H7 logo on your web page, and make a link
back to our home page at:

	http://users.hunterlink.net.au/~demrh/heaven7

			------------

PERSONALISING YOUR MUDLIB

Some of the most common questions I get from administrators and creators
alike about the H7 release is 'how do I add a class', and 'how do I add
more races'. The answer is pretty easy!

Any FAQ kind of questions should be submitted to the h7 development
discussion list.

PERSONALISING YOUR MUDLIB - FREQUENTLY ASKED QUESTIONS

* Adding Classes

1) The directory /include/skills contains the header files for each class.
Each header file contains the stats for each class. You need to make one
of these for each class.

2) Include the file into the skills.h file, also contained in /include/skills
and add the class to the HP information array in that file. 

3) Set your armour/weapon restrictions outlined in /include/skills/armour.dat
and /include/skills/weapon.dat

4) If you require special commands for the class, like spells, add them to
the directory /bin/skills/classes/fighter, for example.

5) Try not to give a class a skill that is the special skill from, thief,
for example. Open and locking doors is a special thief skill, so don't make
a class that has a spell ability like 'knock' or 'wizard lock', which will
make the thief skill redundant.

6) Follow the instructions in the manuals about criterion for spells. Make
sure that spells are uniform so as not to put out of balance one classes'
strengths.

7) A classes skills and strengths are solely based on their class skills. Try
not to make an ability based on level, or someone new to the guild who is level
20 will have automatic powers!



* Adding Races

Races can simply be added by including them in the /inherit/base/races directory.
Simply follow the same routines as in the other files in that directory, and include
them if you wish into the starting races routines in the player object in the login
functions. Humans are supposed to a bit better in their average stats than other
races, so try to follow that guideline. E.g., elves have an average maximum stat
of about 23, where a humans is 25.


* Note on the Sailing Ships

During play it was noticed that if the mud reboots and a player re-enters the mud
on an island only accessible via the ships, the ship may not reload/reboot by itself
and start its voyage.

To correct this, it is suggested that a bell be cloned to each of the port rooms to
which the ship sails to. This bell, when rung, would call to the ship object and
load the ship(s). This will then set it on its way to the player.



			------------


(c) Copyright Heaven7 2001.