The Original Basic Concept Behind a Baddy
Below is a brief list of the most common attributes of a baddy.

1.) It must move around to look for / hunt the player.
2.) It needs to hurt the player, or have some form of attack.
3.) And it needs to be able to be hurt / killed by the player.

The Modern Day Baddy
Now a days, a good baddy can be broken down into a few descriptive functions.  Besides the physical guidelines of a baddy (below), I believe it needs to be: adjustable (ie lots of vars), simple (so people can mess with it), brief (too much unnecessary code makes your NPC suck).  Based on that, I have come up with the following list of things a baddy needs to have or be able to do.

1.) Initializing the Baddy
2.) Choosing a Target
3.) Getting the Distance
4.) Setting Up Movement
5.) Moving the Baddy
6.) Attacking a Target
7.) Being Hurt and Reacting
8.) The Control Loop

I believe these eight things are necessary to a baddy.  And besides those, there are several optional things that all good baddies have, they include:

9.) Animating the Baddy
10.) Facing the Target
11.) Hurting w/o a Weapon
12.) Death and Rewards

Those are the basics.  Now I will try and illustrate a few other things baddies can do.  I will organize the following baddies by their skill/attack.

An Archer can be created using just two more functions, one extra variable, and a slight adjustment to the function that controls the movement.
A1.) Initializing the Archer
A2.) Taking Aim
A3.) Retreating
A4.) Movement
A5.) Shooting At the Target
A6.) The Archer's Control