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.