This is something that I had on Subversive Visions 2.0, and am now
re-creating it on v3.0. It is a basic spellup command. There is one
that has been known to be on Ember MUD, but when I tried it, there are
a lot of things missing. Therefore, I hard coded this command so that
when an immortal uses it on "all", as long as the victim is mortal,
then it will restore the character, dispel them of any magic, then give
them all character enhancement spells at once quietly.
This was done by simply altering the spell name, and then going to the
"void spell_######" and actually copying the affects each individual
spell gives to the victim. This way, it costs no mana. If the immortal
types "spellup <character-name>" it will spell up that character even
if the character is an immortal. Not exactly necessary, but in the
event of immoral kill quests, it can be useful.

Also with this command, there is a spell that I couldn't find a snippet
for ANYWHERE on google, and that is true sight. It's a detection spell
that gives the character all detects at one time. Though I'm getting
ready to change the way spells and skills are called I'm going to
give this code out before I do. I've commented out the "true sight" spell
in case you don't want it, or you don't have it. If you want it, you can
simply search for it in a couple days when I have time to make that snippet.
Here's the code.
//==== Put the code below at the bottom of magic.c  =====//

/* Originally made by Koqlb for Subversive Visions, and
 * heavilly modified. The version for EmberMUD was good,
 * however buggy, and many functions do not work on
 * regular Rom 2.4b6. Plus no restore... What's with that?!
 * Created, and tested on a QuickMUD stock source.
 */

/* Updated the do_spellup function 10/28 due to a huge bug
 * allowing numerous duplicate affects.
 * --Koqlb
 */
void do_spellup(CHAR_DATA * ch, char *argument)
{
    CHAR_DATA *victim;
    DESCRIPTOR_DATA *d;
    char arg[MAX_INPUT_LENGTH];
    char buf[MAX_INPUT_LENGTH];
    SPELL_FUN *spell;
    bool found = FALSE;
    AFFECT_DATA af;
    int sn, level;
    argument = one_argument( argument, arg );

/* Give's a level bonus affect since this is an immortal command */
    level = (MAX_LEVEL + 30); 

    if ( arg[0] == '\0' )
    {
        send_to_char( "Syntax: spellup <char>\n\r"
                      "{w        spellup all\n\r", ch );
        return;
    }
/* Change the MAX_LEVEL - <num> to your liking.  */
    if ( get_trust( ch ) >= MAX_LEVEL - 14 && !str_cmp( arg, "all" ) )
    {


        for ( d = descriptor_list; d != NULL; d = d->next )
        {
            victim = d->character;
/* With "all", you don't get spelled up and neither do other immortals. */
            if ( victim == NULL || IS_NPC( victim) || victim == ch || IS_IMMORTAL(victim))
	    continue;


/* Dispel doesn't get rid of everything. Remove all affects
 * taken from fight.c --Koqlb
 */
    while (victim->affected)
        affect_remove (victim, victim->affected);
        STR_COPY_STR( victim->affected_by, race_table[victim->race].aff, AFF_FLAGS );
/*Remove actual AFF bits. Since above STILL DOESN'T take EVERYTHING OFF*/
	STR_REMOVE_BIT(victim->affected_by, AFF_INVISIBLE);
	STR_REMOVE_BIT(victim->affected_by, AFF_DETECT_EVIL);
	STR_REMOVE_BIT(victim->affected_by, AFF_DETECT_INVIS);
	STR_REMOVE_BIT(victim->affected_by, AFF_DETECT_MAGIC);
	STR_REMOVE_BIT(victim->affected_by, AFF_DETECT_HIDDEN);
	STR_REMOVE_BIT(victim->affected_by, AFF_DETECT_GOOD);
	STR_REMOVE_BIT(victim->affected_by, AFF_SANCTUARY);
	STR_REMOVE_BIT(victim->affected_by, AFF_FAERIE_FIRE);
	STR_REMOVE_BIT(victim->affected_by, AFF_INFRARED);
	STR_REMOVE_BIT(victim->affected_by, AFF_CURSE);
	STR_REMOVE_BIT(victim->affected_by, AFF_POISON);
	STR_REMOVE_BIT(victim->affected_by, AFF_PROTECT_EVIL);
	STR_REMOVE_BIT(victim->affected_by, AFF_PROTECT_GOOD);
	STR_REMOVE_BIT(victim->affected_by, AFF_SLEEP);
	STR_REMOVE_BIT(victim->affected_by, AFF_CHARM);
	STR_REMOVE_BIT(victim->affected_by, AFF_FLYING);
	STR_REMOVE_BIT(victim->affected_by, AFF_PASS_DOOR);
	STR_REMOVE_BIT(victim->affected_by, AFF_HASTE);
	STR_REMOVE_BIT(victim->affected_by, AFF_CALM);
	STR_REMOVE_BIT(victim->affected_by, AFF_PLAGUE);
	STR_REMOVE_BIT(victim->affected_by, AFF_WEAKEN);
	STR_REMOVE_BIT(victim->affected_by, AFF_DARK_VISION);
	STR_REMOVE_BIT(victim->affected_by, AFF_BERSERK);
	STR_REMOVE_BIT(victim->affected_by, AFF_SLOW);
	STR_REMOVE_BIT(victim->affected_by, AFF_TRUE_SIGHT);
/*Restore victim */
            affect_strip (victim, gsn_plague);
            affect_strip (victim, gsn_poison);
            affect_strip (victim, gsn_blindness);
            affect_strip (victim, gsn_sleep);
            affect_strip (victim, gsn_curse);
	/* Heal player*/
            victim->hit = victim->max_hit;
            victim->mana = victim->max_mana;
            victim->move = victim->max_move;
            update_pos (victim);

/* Here we go. Bring on the spells! Using stock spells*/

            spell = spell_giant_strength;  /*changes the spell being called to */
            sn == skill_lookup( "giant strength" );/* The skill lookup from const.c */
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = level;
    af.location = APPLY_STR;
    af.modifier = 1 + (level >= 18) + (level >= 25) + (level >= 32);
    af.bitvector = 0;
    affect_to_char (victim, &af);
}

           spell = spell_fly;
           sn = skill_lookup( "fly" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = level + 3;
    af.location = 0;
    af.modifier = 0;
    af.bitvector = AFF_FLYING;
    affect_to_char (victim, &af);
}
            spell = spell_frenzy;
            sn == skill_lookup( "frenzy" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = level / 3;
    af.modifier = level / 6;
    af.bitvector = 0;

    af.location = APPLY_HITROLL;
    affect_to_char (victim, &af);

    af.location = APPLY_DAMROLL;
    affect_to_char (victim, &af);

    af.modifier = 10 * (level / 12);
    af.location = APPLY_AC;
    affect_to_char (victim, &af);
}

            spell = spell_sanctuary;
            sn = skill_lookup( "sanctuary" );
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = level / 6;
    af.location = APPLY_NONE;
    af.modifier = 0;
    af.bitvector = AFF_SANCTUARY;
    affect_to_char (victim, &af);

            spell = spell_armor;
            sn = skill_lookup( "armor" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = 24;
    af.modifier = -20;
    af.location = APPLY_AC;
    af.bitvector = 0;
    affect_to_char (victim, &af);
}

      spell = spell_stone_skin;
      sn = skill_lookup("stone skin");
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = level;
    af.location = APPLY_AC;
    af.modifier = -40;
    af.bitvector = 0;
    affect_to_char (victim, &af);
}

            spell = spell_invis;
            sn = skill_lookup( "invis" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = level + 12;
    af.location = APPLY_NONE;
    af.modifier = 0;
    af.bitvector = AFF_INVISIBLE;
    affect_to_char (victim, &af);
}

            spell = spell_bless;
            sn = skill_lookup( "bless" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = 6 + level;
    af.location = APPLY_HITROLL;
    af.modifier = level / 8;
    af.bitvector = 0;
    affect_to_char (victim, &af);

    af.location = APPLY_SAVING_SPELL;
    af.modifier = 0 - level / 8;
    affect_to_char (victim, &af);
}

            spell = spell_protection_evil;
            sn = skill_lookup( "protection evil" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = 24;
    af.location = APPLY_SAVING_SPELL;
    af.modifier = -1;
    af.bitvector = AFF_PROTECT_EVIL;
    affect_to_char (victim, &af);
}

	    spell = spell_protection_good;
	    sn = skill_lookup( "protection good" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = 24;
    af.location = APPLY_SAVING_SPELL;
    af.modifier = -1;
    af.bitvector = AFF_PROTECT_GOOD;
    affect_to_char (victim, &af);
}

            spell = spell_pass_door;
            sn = skill_lookup( "pass door" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = number_fuzzy (level / 4);
    af.location = APPLY_NONE;
    af.modifier = 0;
    af.bitvector = AFF_PASS_DOOR;
    affect_to_char (victim, &af);
}

            spell = spell_shield;
            sn = skill_lookup( "shield" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = 8 + level;
    af.location = APPLY_AC;
    af.modifier = -20;
    af.bitvector = 0;
    affect_to_char (victim, &af);
}

            spell = spell_haste;
            sn = skill_lookup( "haste" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    if (victim == ch)
        af.duration = level / 2;
    else
        af.duration = level / 4;
    af.location = APPLY_DEX;
    af.modifier = 1 + (level >= 18) + (level >= 25) + (level >= 32);
    af.bitvector = AFF_HASTE;
    affect_to_char (victim, &af);
}
      	    spell = spell_true_sight;
	    sn = skill_lookup( "true sight" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = level;
    af.modifier = 0;
    af.location = APPLY_NONE;
    af.bitvector = AFF_TRUE_SIGHT;
    affect_to_char(victim, &af);
    af.bitvector = AFF_DETECT_MAGIC;
    affect_to_char (victim, &af);
    af.bitvector = AFF_DETECT_INVIS;
    affect_to_char (victim, &af);
    af.bitvector = AFF_DETECT_HIDDEN;
    affect_to_char (victim, &af);
    af.bitvector = AFF_DETECT_GOOD;
    affect_to_char (victim, &af);
    af.bitvector = AFF_DETECT_EVIL;
    affect_to_char (victim, &af);
   }

   act( "{cYou hear $n exclaim '{CSpellicus MAXIMUS!!!{c' from the heavens.{x", ch, NULL, victim, TO_VICT );
   send_to_char( "{WYou've been given a full spellup!{x", victim);

        }
        sprintf( buf, "\n\r\n\rAll mortals have been spelled up.\n\r" );
        send_to_char( buf, ch );
        return;
    }
/* Now for if you choose an individual character to spellup by name */
    if ( ( victim = get_char_world( ch, arg ) ) == NULL )
    {
        send_to_char( "No such player on right now.\n\r", ch );
        return;
    }
    else
/* Do Restore */
            affect_strip (victim, gsn_plague);
            affect_strip (victim, gsn_poison);
            affect_strip (victim, gsn_blindness);
            affect_strip (victim, gsn_sleep);
            affect_strip (victim, gsn_curse);

            victim->hit = victim->max_hit;
            victim->mana = victim->max_mana;
            victim->move = victim->max_move;
            update_pos (victim);

/* Dispel didn'ta get rid of everything. Remove all affects
 * taken from fight.c --Koqlb
 */
    while (victim->affected)
        affect_remove (victim, victim->affected);
    STR_COPY_STR( victim->affected_by, race_table[victim->race].aff, AFF_FLAGS );

/*Remove actual AFF bits. Since above STILL DOESN'T take EVERYTHING OFF*/
STR_REMOVE_BIT(victim->affected_by, AFF_INVISIBLE);
STR_REMOVE_BIT(victim->affected_by, AFF_DETECT_EVIL);
STR_REMOVE_BIT(victim->affected_by, AFF_DETECT_INVIS);
STR_REMOVE_BIT(victim->affected_by, AFF_DETECT_MAGIC);
STR_REMOVE_BIT(victim->affected_by, AFF_DETECT_HIDDEN);
STR_REMOVE_BIT(victim->affected_by, AFF_DETECT_GOOD);
STR_REMOVE_BIT(victim->affected_by, AFF_SANCTUARY);
STR_REMOVE_BIT(victim->affected_by, AFF_FAERIE_FIRE);
STR_REMOVE_BIT(victim->affected_by, AFF_INFRARED);
STR_REMOVE_BIT(victim->affected_by, AFF_CURSE);
STR_REMOVE_BIT(victim->affected_by, AFF_POISON);
STR_REMOVE_BIT(victim->affected_by, AFF_PROTECT_EVIL);
STR_REMOVE_BIT(victim->affected_by, AFF_PROTECT_GOOD);
STR_REMOVE_BIT(victim->affected_by, AFF_SLEEP);
STR_REMOVE_BIT(victim->affected_by, AFF_CHARM);
STR_REMOVE_BIT(victim->affected_by, AFF_FLYING);
STR_REMOVE_BIT(victim->affected_by, AFF_PASS_DOOR);
STR_REMOVE_BIT(victim->affected_by, AFF_HASTE);
STR_REMOVE_BIT(victim->affected_by, AFF_CALM);
STR_REMOVE_BIT(victim->affected_by, AFF_PLAGUE);
STR_REMOVE_BIT(victim->affected_by, AFF_WEAKEN);
STR_REMOVE_BIT(victim->affected_by, AFF_DARK_VISION);
STR_REMOVE_BIT(victim->affected_by, AFF_BERSERK);
STR_REMOVE_BIT(victim->affected_by, AFF_SLOW);
STR_REMOVE_BIT(victim->affected_by, AFF_TRUE_SIGHT);

/*Restore victim */
            affect_strip (victim, gsn_plague);
            affect_strip (victim, gsn_poison);
            affect_strip (victim, gsn_blindness);
            affect_strip (victim, gsn_sleep);
            affect_strip (victim, gsn_curse);

            victim->hit = victim->max_hit;
            victim->mana = victim->max_mana;
            victim->move = victim->max_move;
            update_pos (victim);

/* Bring on the spells for one character! */
            spell = spell_giant_strength;           
            sn = skill_lookup( "giant strength" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = level;
    af.location = APPLY_STR;
    af.modifier = 1 + (level >= 18) + (level >= 25) + (level >= 32);
    af.bitvector = 0;
    affect_to_char (victim, &af);
}

            spell = spell_fly;
           sn = skill_lookup( "fly" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = level + 3;
    af.location = 0;
    af.modifier = 0;
    af.bitvector = AFF_FLYING;
    affect_to_char (victim, &af);
}
            spell = spell_frenzy;
            sn = skill_lookup( "frenzy" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = level / 3;
    af.modifier = level / 6;
    af.bitvector = 0;
    af.location = APPLY_HITROLL;
    affect_to_char (victim, &af);
    af.location = APPLY_DAMROLL;
    affect_to_char (victim, &af);
    af.modifier = 10 * (level / 12);
    af.location = APPLY_AC;
    affect_to_char (victim, &af);
}

    spell = spell_sanctuary;
    sn = skill_lookup( "sanctuary" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = level / 6;
    af.location = APPLY_NONE;
    af.modifier = 0;
    af.bitvector = AFF_SANCTUARY;
    affect_to_char (victim, &af);
}
 
    spell = spell_armor;
    sn = skill_lookup( "armor" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = 24;
    af.modifier = -20;
    af.location = APPLY_AC;
    af.bitvector = 0;
    affect_to_char (victim, &af);
}

      spell = spell_stone_skin;
      sn = skill_lookup("stone skin");
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = level;
    af.location = APPLY_AC;
    af.modifier = -40;
    af.bitvector = 0;
    affect_to_char (victim, &af);
}

    spell = spell_invis;
    sn = skill_lookup( "invis" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = level + 12;
    af.location = APPLY_NONE;
    af.modifier = 0;
    af.bitvector = AFF_INVISIBLE;
    affect_to_char (victim, &af);
}

    spell = spell_bless;
    sn = skill_lookup( "bless" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = 6 + level;
    af.location = APPLY_HITROLL;
    af.modifier = level / 8;
    af.bitvector = 0;
    affect_to_char (victim, &af);

    af.location = APPLY_SAVING_SPELL;
    af.modifier = 0 - level / 8;
    affect_to_char (victim, &af);
}

    spell = spell_protection_evil;
    sn = skill_lookup( "protection evil" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = 24;
    af.location = APPLY_SAVING_SPELL;
    af.modifier = -1;
    af.bitvector = AFF_PROTECT_EVIL;
    affect_to_char (victim, &af);
}

    spell = spell_pass_door;
    sn = skill_lookup( "pass door" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = number_fuzzy (level / 4);
    af.location = APPLY_NONE;
    af.modifier = 0;
    af.bitvector = AFF_PASS_DOOR;
    affect_to_char (victim, &af);
}

    spell = spell_shield;
    sn = skill_lookup( "shield" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = 8 + level;
    af.location = APPLY_AC;
    af.modifier = -20;
    af.bitvector = 0;
    affect_to_char (victim, &af);
}

    spell = spell_haste;
    sn = skill_lookup( "haste" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    if (victim == ch)
        af.duration = level / 2;
    else
        af.duration = level / 4;
    af.location = APPLY_DEX;
    af.modifier = 1 + (level >= 18) + (level >= 25) + (level >= 32);
    af.bitvector = AFF_HASTE;
    affect_to_char (victim, &af);
}

      	    spell = spell_true_sight;
	    sn = skill_lookup( "true sight" );
{
    af.where = TO_AFFECTS;
    af.type = sn;
    af.level = level;
    af.duration = level;
    af.modifier = 0;
    af.location = APPLY_NONE;
    af.bitvector = AFF_TRUE_SIGHT;
    affect_to_char(victim, &af);
    af.bitvector = AFF_DETECT_MAGIC;
    affect_to_char (victim, &af);
    af.bitvector = AFF_DETECT_INVIS;
    affect_to_char (victim, &af);
    af.bitvector = AFF_DETECT_HIDDEN;
    affect_to_char (victim, &af);
    af.bitvector = AFF_DETECT_GOOD;
    affect_to_char (victim, &af);
    af.bitvector = AFF_DETECT_EVIL;
    affect_to_char (victim, &af);
}

    act( "$n has given you an immortal spellup.", ch, NULL, victim, TO_VICT );
    sprintf( buf, "\n\r\n\rYou have given %s an Immortal spellup.\n\r",
             victim->name );
    send_to_char( buf, ch );

}
/* End do_spellup */
------

//Now in interp.c, find the immortal commands. Put this in above:
//* let immortals have it, you can replace IM with whatever level you want.
//    {"sla",             do_sla,         POS_DEAD, L5, LOG_NORMAL, 0},
+    {"spellup",         do_spellup,     POS_DEAD, IM, LOG_ALWAYS, 1}, /*remove + sign */

------

//Then in interp.h put the following code below the call for do_spells:

DECLARE_DO_FUN( do_spellup              );

----------
That's it! All I ask is that you leave the credits in there at the top of 
the function in magic.c and in the helpfile. Here's the helpfile to copy/paste into
"help.are" and change the number to the level that the immortal gets the command.:

111 SPELLUP~
Syntax: Syntax: spellup <char>
        spellup all

Spellup is a command that gives all character enhancement spells to others.
Written and tested by Koqlb for Subversive Visions, this command is for only
those trusted Immortals, and allows the player to spell up either every mortal
playing on the game, or an individual character. It also gives a level bonus
for the "victim" so that it lasts longer than a mortal's spell, even if they
are at the maximum mortal level. It's a gift from the Gods that should be used
fairly.
~