Code:
void do_mob_backstab(struct char_data *ch, struct char_data *vict)
{
  int hit_roll = 0, to_hit = 0;
  
  hit_roll = number (1,100) + GET_STR(ch);
  to_hit = (100 - (int) (100*GET_LEVEL(ch)/250));
  if (GET_LEVEL(vict) >= LVL_IMMORT)  
    hit_roll = 0;
  if (FIGHTING(ch)){
    act("$N just tried to backstab you during combat!", FALSE, vict, 0, ch, TO_CHAR);
    act("$e notices you. You cannot backstab in combat!", FALSE, vict, 0, ch, TO_VICT);
    act("$N attempts to backstab $n during combat!", FALSE, vict, 0, ch, TO_NOTVICT);
  }
  if (MOB_FLAGGED(vict, MOB_AWARE) && AWAKE(vict)) {
    act("You notice $N lunging at you!", FALSE, vict, 0, ch, TO_CHAR);
    act("$e notices you lunging at $m!", FALSE, vict, 0, ch, TO_VICT);
    act("$n notices $N lunging at $m!", FALSE, vict, 0, ch, TO_NOTVICT);
    hit(vict, ch, TYPE_UNDEFINED);
    return;
  }
  if (hit_roll < to_hit) {
    damage(ch, vict, 0, SKILL_BACKSTAB);
  } else {
    hit(ch, vict, SKILL_BACKSTAB);
    WAIT_STATE(vict, PULSE_VIOLENCE * 2);
    WAIT_STATE(ch, PULSE_VIOLENCE * 3);
  }
}
SPECIAL(thief_class)
{
  struct char_data *cons;
  if (cmd)
    return (FALSE);
  if (GET_POS(ch) != POS_STANDING)
    return (FALSE);
  for (cons = world[ch->in_room].people; cons; cons = cons->next_in_room)
    if (!IS_NPC(cons) && (GET_LEVEL(cons) < LVL_IMMORT) && (!number(0, 4))) {
		if(number(1,50) > 25){
      do_mob_backstab(ch, cons);
		}
		else{
      npc_steal(ch, cons);
		}
      return (TRUE);
    }
  return (FALSE);
}
 
Would this work with tba ? Or what would need to be changed.