From: Fili <cybom@netropolis.net>
Subject: Mob Summoning Spell

 This code allows you to create a spell that will summon a zombie when 
cast. It can easily be changed to suit your needs, and should work fine 
with whatever setting you want to put it in. If it doesn't work, mail
cybom@netropolis.net.  Good Luck.

7/19/97 - There was a problem with the fact that I had it summoning the
wrong kind of mob :) Oh well. I also saw a parse error or two so I 
dedided now would be a good time to fix it. Sorry!


Begin Code:
---------------------

in magic.c:

around line 875 (I have heavily modified code)
BEFORE void mag_summons

#define MOB_UNDEAD  1000 /* The number is the vnum of the mob to be 
                            summoned */

in void mag_summons()
add after switch (spellnum) { 

  case SPELL_SUMMON_UNDEAD: /* Tells what spell we're using */

    handle_corpse = 0; /* Tells that we do not need a corpse to work the 
                          spell on */

    msg = 12; /* In an array above, you see the message numbers. This 
                 tells what message number to use */

    mob_num = MOB_UNDEAD; /* This is what the #define was for. This tells 
                             which mob you want to summon */

    mob = read_mobile(mob_num, VIRTUAL); /* This sets the variable 'mob' to 
                                         the vnum of the mob to summon
                                         (correct me if I'm wrong here...) */

    char_to_room(mob, ch->in_room);  /* This actually loads the mob */

    IS_CARRYING_W(mob) = 0; /* Makes sure the mob isn't carrying anything */

    IS_CARRYING_N(mob) = 0; /* Makes sure the mob can't carry anything */

    SET_BIT(AFF_FLAGS(mob), AFF_CHARM); /* Makes the mob take the caster's
                                           orders */

    add_follower(mob, ch); /* Actually make the mob follow the caster */

    act(mag_summon_msgs[fmsg], FALSE, ch, 0, mob, TO_ROOM);
                                        /* send a message to the room */

    send_to_char("The Zombies you summoned appear before you.\r\n", ch); 
              /* send a message to the caster saying that he succeeded */

    break; /* the end */


in spell_parser.c:

around line 94:

 Change the first "!unused!" to "summon undead" REMEMBER THE NUMBER THAT 
IS HERE. The numbers are stated in the comments. Line 94 is 2 lines after 
the /* 50 */, so the number is 52.

around line 1011:

     spello(SPELL_SUMMON_UNDEAD, 100, 75, 3, POS_SITTING, 
        TAR_IGNORE, FALSE, MAG_SUMMONS); /* read one of the spell.doc
                                            files on the snippets site
                                            for explanation here */

in magic.h: 

around line 91:

Add in #define SPELL_SUMMON_UNDEAD  ?? /* The ?? is the number from 
                                          spell_parser.c */

Then, all you have to do is add in the spell in class.c, and you're 
pretty much done! Have fun! Hope it works....

Fili
