void do_thrust( CHAR_DATA *ch, char *argument )
{
    CHAR_DATA *victim;
    int dam;

    if ( !IS_NPC(ch)
    &&   ch->level < skill_table[gsn_thrust].skill_level[ch->class] )
    {
	send_to_char(
	    "You better leave the martial arts to monks.\n\r", ch );
	return;
    }

    if ( ( victim = ch->fighting ) == NULL )
    {
	send_to_char( "You aren't fighting anyone.\n\r", ch );
	return;
    }

    if (ch->stunned)
    {
        send_to_char("You're still a little woozy.\n\r",ch);
        return;
    }

    if ( !can_see( ch, victim ) )
    {
	send_to_char("You stumble blindly into a wall.\n\r",ch);
	return;
    }

    dam = number_range( 1, ch->level+1000 );
    WAIT_STATE( ch, skill_table[gsn_thrust].beats );
    if ( get_skill(ch,gsn_thrust) > number_percent())
    {
	damage(ch,victim,number_range( dam, (ch->level*3.7) ), gsn_thrust,DAM_PIERCE,TRUE);
	check_improve(ch,gsn_thrust,TRUE,1);
    }
    else
    {
	damage( ch, victim, 0, gsn_thrust,DAM_PIERCE,TRUE);
	check_improve(ch,gsn_thrust,FALSE,1);
    }
    return;
}
