********************************************************************************
"SkillMUD" technology preview release 1
This file last updated: 6/29/2004 3:00AM
SkullMUD is developed by Jeremy Hill <jeremyhill@cox.net> (Tamraine)
Area files and some help files by other SkullMUD developers

This codebase has been developed on and off since approximately 1/23/04.
********************************************************************************

Note:
This code is, simply, a mess.  It is 100% not ready for public consumption.
It is especially not ready for a player base.  Nothing is completed.  For
example, who wants to play on a MUD where skills exist but cannot be cast? :)
It is being released primarily for developers looking for new ideas.
I arbitrarily consider each of the following parts that have begun implementation
a % done:
Skill system (underlying system): 80%
Magic system (based on above): 10%
Programs: 25%
Menus: 80%
Events (underlying system): 90%

There are many more things that haven't even begun implementation.  Check
out comments prefixed with //JH to see some of my notes.

The code is primarily in C with some C++ traces.  I have recently begun
exploring C++ and have discovered it to be a very powerful language.  As I 
develop my knowledge of the language, new and more powerful code will
begin to appear and less C-style code will be added.

Much of the magic system and races will not make sense because I have removed
them from the helpfiles and elsewhere.  This is to preserve the IP of the game
while allowing outsiders to take a look at the code base.

I release the event code and skill code as open source on the caveat that
you e-mail me telling me that you are planning on using it.  I am interested
in what becomes of the code I release to the open source community.

********************************************************************************
Changes:

C++:
Compiles with g++, C++ compatible; most is still extern "C" though.
Only tested under linux.
- Requires at least g++ version 3.
- Uses STL libraries (skill system: vector, sort.)
(Compiled with:
gcc version 3.3.4 20040623 (Gentoo Linux 3.3.4-r1, ssp-3.3.2-2, pie-8.7.6)
(should compile with most linux distros so long as g++ is up-to-date)

Help system:
- 1stMUD-style Help function
- addition: help find <argument>
- help_area_data removed (buggy, worthless, no need), single help.txt impl.
    
Taglines:
Added to many parts of the game, see 'help tagline' for more info.  Search
the code for tagline_to_char to see everywhere it is used.  Originally
written by : imapopsyckle@hotmail.com
However, I completely rewrote his code to suit my own purposes, such as
creating tagline strings (see the various tagline_output calls).

Magic:
Magic system is significantly different than rom's; 4 types of magic.
Magic is level-based and prerequisite based.
<unfinished>

Programs:
Significantly altered. %% dealy.
Many object and room commands added, such as 'input' trigger--basically a quick
and dirty way for a program to have its own command, such as 'fire ballista'.

Menus:
'menu' command
Completely different from SmaugWiz's.  Probably not as cleanly implemented.

Events:
'event' command

Affects:
Event-driven

Polls:
An example of a menu that does not lock to a player.

Skills:
Completely rewritten, now 90% created in game.  'Better' than Smaug's skill
editing.

Small changes:
Sit changed to be more versatile (now 'ensconce'); kneel, squat, etc.
Old rom note system replaces hateful board system.  Can 'note write', though.

Weapons now are table-based (on level) for damage unless extra-flagged
exceptional.  See const.c, weapon_table.  Example:
    {"sword", OBJ_VNUM_SCHOOL_SWORD, WEAPON_SWORD, &gsn_dummy, 2, 4, 1, 1},
This means, at level 1-9, damage is 2d4.  At level 10-19, 3d5.  Level 20, 4d6.
This is optional--you can set an object 'exceptional'

Secret doors.  Can only open secret doors by knowing their keyword.  See
'help secret doors'

Alignment removed from the game; it is an artificiality that is not needed.

Objects that have been placed in other object can, after being triggered,
continue to execute their code.  (an important part of delayed program
execution)

'logf' changed to 'writelogf'.  Logf conflicts with built-in logf with GCC/FreeBSD [exp(3)].
(float logf(float x);)

This code loads and saves area files that are nowhere near to being ROM compatible :)

Objects have v0-v9 (was v0-v4) now for future expansion.

********************************************************************************
------------Future/todo:-------------
Implement cast

Add 'aura' string field to skills, replaces e.g. "(White Aura)" hardcode

vector on player for learned skills (impossible to do a flat table)

Conversations

Program rewrite

Variables in programs

Menus in programs

Wilderness

NPC Quests (relates to conversations)

Library

Would like to somehow link skill functions back to the Skill they are part of

Would like to rewrite menus to be a C++ class

Would like to rewrite events to be a C++ class

Would like to use SQL for certain things
********************************************************************************