From: morning glory <mocat@hooked.net>

This is the code for circle, a command that lets you backstab when you 
are fighting.  It's recommended that you put this at a fairly high level, 
and reduce the damage that it does compared to normal backstab, as if you 
don't it will put the players with the skill at too much of an advantage.
If anyone finds out how to make it so when you circle, it doesn't look if 
you have second and third attack, and only circles once, mail me.
If you want to add circle in as a skill for NPC's, just add an OFF_CIRCLE 
to merc.h, and add circle in as case 9 in fight.c, right under backstab.
 
fight.c:
 
* signifies a line already in the code, just search for it and add in the 
code without the *'s.
 
*DECLARE_DO_FUN(do_backstab      );
*DECLARE_DO_FUN(do_emote         );
DECLARE_DO_FUN(do_circle        );
 
 
*    if (dt == gsn_backstab)
*        thac0 -= 10 * (100 - get_skill(ch,gsn_backstab));
 
    if (dt == gsn_circle)
        thac0 -= 10 * (100 - get_skill(ch,gsn_circle));
 
*    if ( dt == gsn_backstab && wield != NULL)
*        if ( wield->value[0] != 2 )
*            dam *= 2 + (ch->level / 10);
*        else
*            dam *= 2 + (ch->level / 8);
 
    if ( dt == gsn_circle && wield != NULL)
        if ( wield->value[0] != 2 )
           dam *= 2+ (ch->level / 10);
        else
           dam *=2 + (ch->level / 8);
 
add this in under backstab:
 
void do_circle( CHAR_DATA *ch, char *argument )
{
    char arg[MAX_INPUT_LENGTH];
    CHAR_DATA *victim;
    OBJ_DATA *obj;
 
    one_argument( argument, arg );
 
    if (arg[0] == '\0')
    {
        send_to_char("Circle whom?\n\r",ch);
        return;
    }
 
 
    else if ((victim = get_char_room(ch,arg)) == NULL)
    {
        send_to_char("They aren't here.\n\r",ch);
        return;
    }
 
    if ( is_safe( ch, victim ) )
      return;
 
    if (IS_NPC(victim) &&
         victim->fighting != NULL &&
        !is_same_group(ch,victim->fighting))
 
    {
        send_to_char("Kill stealing is not permitted.\n\r",ch);
        return;
    }
 
    if ( ( obj = get_eq_char( ch, WEAR_WIELD ) ) == NULL)
    {
        send_to_char( "You need to wield a weapon to circle.\n\r", ch );
        return;
    }
 
    if ( ( victim = ch->fighting ) == NULL )
    {
        send_to_char( "You must be fighting in order to circle.\n\r", ch );
        return;
    }
 
    check_killer( ch, victim );
    WAIT_STATE( ch, skill_table[gsn_circle].beats );
    if ( number_percent( ) < get_skill(ch,gsn_circle)
    || ( get_skill(ch,gsn_circle) >= 2 && !IS_AWAKE(victim) ) )
    {
        check_improve(ch,gsn_circle,TRUE,1);
        multi_hit( ch, victim, gsn_circle );
    }
    else
    {
        check_improve(ch,gsn_circle,FALSE,1);
        damage( ch, victim, 0, gsn_circle,DAM_NONE,TRUE);
    }
 
    return;
}
 
 
As for the rest of the files, just search each for a gsn_backstab, and 
add the exact same thing for gsn_circle...
Make sure to add the cirlce skill into const.c, but make it a higher 
level than backstab.
In interp.c, add the command in.
if you have any problems, mail me at mocat@hooked.net.
