--- the spell std
to use, instead of using 

inherit DAEMON;  you use inherit SPELL; instead in your spells.

To make coding spells easier there are a bunch of properties you
can set in the create function to make it run. Such as:

void create()
{
 ::create();
set_properties( ([ "req_level" : 1 ]) );
}

"req_level" is the required level for the spell to be able to be casted.
Entering properties is simple, if its a string pointer you do it like this:


 set_properties( ([ "target_properties" : ({ "living", "start combat" }) ]) );
If its a mapping property do it like this :
 set_properties( ([ "req_skills" : ([ "attack" : 150, "defense" : 150,
                                      "nature" : 150 ]) ]) );

I think the rest of the types of propertys are self explanitory like the 
integer types.

Here are a list of properties and their uses:
-------------------------------------------------------------------------------
"min_alignment" - This is the minium alignment needed to be able to cast
the spell.( low as -1500)
-------------------------------------------------------------------------------
"max_alignment" - This is the maximum alignment allowed to be able to cast
the spell. (up to 1500)
-------------------------------------------------------------------------------
"req_class"     - This is a string pointer and this stores all the allowed
classes that can cast the spell. Pass the list of classes as a string
pointer. (ex: ({"fighter", "rogue", "monk"}) )
-------------------------------------------------------------------------------
"req_subclass"  - Same as "req_class" but its the allowed subclasses that
can cast the spell. Just because one of the allowed classs is mage and they
are a mage, they're subclass also MUST be in the req_subclass in order to
be able to cast the spell.
-------------------------------------------------------------------------------
"req_level"    - The required level needed to cast the spell
-------------------------------------------------------------------------------
"req_mp"       - The required amount of mp they need before they can cast.
-------------------------------------------------------------------------------
"min_mp"       - This is the minimum amount of mp that will be taken away
when they cast it. More will be taken away depending on damage.
-------------------------------------------------------------------------------
"target_properties" - This is a string pointer array of target properties. 
Such as it must be alive, start combat when spell is casted, etc.  
Heres a list of target properties you can use:
    /-----------------------------------------------------------------------\
    |   "living"  - Target must be living, not dead, or inanimate.          |
    |   "start combat " - This property will make the spell start combat    |
    |                     when the spell is casted.                         |
    |   "no cast me "   - The spell is not able to be casted on its caster. |
    \-----------------------------------------------------------------------/
-------------------------------------------------------------------------------
"spell_properties"      - These are the propertys that effect if the spell
can be casted or not, such as the room is non attacking, no magic, they
cant be in combat to cast it, etc. 
Heres a list of spell properties you can use:
     /-------------------------------------------------------------------\
     |  "no attack"  - Cannot be casted in a no attack area.             |
     |  "no magic"   - Cannot be casted in a no magic area.              |
     |  "not combat" - They cannot cast the spell if they are in combat. |
     \-------------------------------------------------------------------/
-------------------------------------------------------------------------------
"req_skills"    - This is a mapping of the required skills needed to be
able to cast the spell. (ex: ([ "attack" : 150, "defense" : 150 ]) )
-------------------------------------------------------------------------------
"req_stats"     - Same as "req_skills" but for stats.
-------------------------------------------------------------------------------

Here are the functions you must call in your cmd_(spellname) function.

First you need to call player_ok(this_player()) to make sure the player
fufils the requirements to cast the spell, such as level, class, stats, 
skills, etc.. example:
  if (!player_ok(this_player())) return 0;
if player_ok is 0 there is a notify_fail for it on the problem it failed on,
like not enough magic attack, etc.

Then you need to call spell_ok(this_player()) to process the spell properties
to make sure they can cast it. Do it the same way as the player_ok:
  if (!spell_ok(this_player())) return 0;

Lastly, you have target_ok, this checks to see if the target is a valid target
according to the target properties. Call it just like the rest of the funcs.
  if (!target_ok(targetob)) return 0;


When you want to display your spells message use spell message to make it 
quick. spell_message accepts  5 parameters, 
1st. message to the caster, %s is replaced with the targets name.
2nd. message to the target, %s is replaced with the casters name.
3rd. message to the room, %s, and the other %s replaced with caster and targets
name. 
 example:
  spell_message( ({ "You smash %s good.",
                    "%s smashes you good.",
                    "%s smashes %s good." }) , this_player(), targetob);


The final function that the spell is casted in is called setup_spell.
setup_spell has 3 parameters:

1st. this_players object
2nd. targets object
3th. Damage type (in a string pointer)

example:
 setup_spell(this_player(), targetob, ({ "fire" }));


**Note** The spell daemon has just started, if you have any comments or
questions, ask Seeker.
