Templar Shield and God Sword skills. If you have a knight, Paladin or Templar
Class these should work nicely. If not you can always doctor either of these
functions to fit your spell-object-creating needs and the add_affect function
is extremly helpful and can be used for lots :) -Xrakisis

     void add_affect ( OBJ_DATA * obj, int apply, long value )
        {
        AFFECT_DATA * paf;

        if ( affect_free == NULL )
        paf = alloc_perm( sizeof( * paf ) );
        else
        {
        paf         = affect_free;
        affect_free = affect_free->next;
        }
        paf->type      = 0;
        paf->duration  = -1;
        paf->location  = apply;
        paf->modifier  = value;
        paf->bitvector = 0;
        paf->next      = obj->affected;
        obj->affected  = paf;
        }


// Templar
void spell_knightshield( int sn, int level, CHAR_DATA *ch, void *vo, int target )
{
    OBJ_DATA *item;
    char buf     [MAX_STRING_LENGTH];
    int hitroll = 0;
    int damroll = 0;
    int armor   = 0;
            
    item = create_object( get_obj_index( OBJ_VNUM_KNIGHTSHIELD ), 1 );
   
     
    free_string(item->name);
    sprintf(buf,"Templar Shield of %s",god_table[ch->god].name);
    item->name = str_dup(buf);
    free_string(item->short_descr);
    sprintf(buf,"Templar Shield of %s",god_table[ch->god].name);
    item->short_descr = str_dup(buf);
    free_string(item->description);
    sprintf(buf,"Templar Shield of %s",god_table[ch->god].name);
    item->description = str_dup(buf);

//    SET_BIT( item->item_type, ITEM_ARMOR );
    item->item_type = ITEM_ARMOR;
    SET_BIT( item->wear_flags, ITEM_TAKE );
    SET_BIT( item->wear_flags, ITEM_WEAR_SHIELD );
    SET_BIT( item->extra_flags, ITEM_MAGIC);
    SET_BIT( item->extra_flags, ITEM_GLOW);       
    item->value[0] = 200;  // pierce
    item->value[1] = 200;  // bash 
    item->value[2] = 200;  // slash
    item->value[3] = 200;  // magic
    item->level = ch->level;
    item->condition = 100;
    item->weight = 10;
    if (ch->level <= 50) hitroll = 50; 
    else hitroll = ch->level;
    if (ch->level <= 50) damroll = 50; 
    else damroll = ch->level;
    armor = number_range(-200,-300);
    add_affect( item, APPLY_HITROLL, hitroll );
    add_affect( item, APPLY_DAMROLL, damroll );

    obj_to_char(item,ch);
    act("$p fades into existance in your hand.", ch, item, NULL, TO_CHAR);
    act("$p fades into existance in $n's hand.", ch, item, NULL, TO_ROOM);
    return;
}


// Templar
void spell_godsword( int sn, int level, CHAR_DATA *ch, void *vo, int target )
{
    OBJ_DATA *item;
    char buf     [MAX_STRING_LENGTH];
    int hitroll = 0;
    int damroll = 0;
    int armor   = 0;
            
    item = create_object( get_obj_index( OBJ_VNUM_KNIGHTSWORD ), 1 );
   
     
    free_string(item->name);
    sprintf(buf,"Templar Broad-Sword of %s",god_table[ch->god].name);
    item->name = str_dup(buf);
    free_string(item->short_descr);
    sprintf(buf,"Templar Broad-Sword of %s",god_table[ch->god].name);
    item->short_descr = str_dup(buf);
    free_string(item->description);
    sprintf(buf,"Templar Broad-Sword of %s",god_table[ch->god].name);
    item->description = str_dup(buf);

    item->item_type = ITEM_WEAPON;
    SET_BIT( item->wear_flags, ITEM_TAKE );
    SET_BIT( item->wear_flags, ITEM_WIELD );
    item->weapon_class = WEAPON_SWORD;
    SET_BIT( item->extra_flags, ITEM_MAGIC);
    SET_BIT( item->extra_flags, ITEM_GLOW);       
    item->value[1] = 20;  // bash 
    item->value[2] = 20;  // slash
    SET_BIT(item->value[4], WEAPON_FLAMING);
    item->level = ch->level;
    item->condition = 100;
    item->weight = 10;
    if (ch->level <= 50) hitroll = 50; 
    else hitroll = ch->level;
    if (ch->level <= 50) damroll = 50; 
    else damroll = ch->level;
    armor = number_range(-200,-300);
    add_affect( item, APPLY_HITROLL, hitroll );
    add_affect( item, APPLY_DAMROLL, damroll );

    obj_to_char(item,ch);
    act("$p fades into existance in your hand.", ch, item, NULL, TO_CHAR);
    act("$p fades into existance in $n's hand.", ch, item, NULL, TO_ROOM);
    return;
}