It took me about 2.5 years. Here's my Quick NPC System, from an original post by Henry:
80% Accurate NPC Creation Rules
I have a system I use that works well for me, regardless of play level. It was written for classed creatures and NPCs, but works also for "unlevelled" critters - at least for me.
DISCLAIMER:
This method will not work well for Major NPCs, and Major Villains. If you want to give certain villains their utmost prowess, you may need to stat them fully. However, this will work for 80% of the “shock troops”, shop keepers, bellhops, stable boys, scullery maids, and senators and mayors your PCs will ever meet.
1. Start with Name, Alignment, Class, Level, and details. Write these down. That’s it. No need to be specific if this is an NPC they won’t be fighting.
1. If you need a specific skill - this is a skill that is actually coming into play; NPC is bargaining with PCs, NPC is repairing armour, etc, then figure if the NPC is just decent, or GOOD at that skill. If decent, assign 1 skill rank per level. If GOOD, assign skill ranks = level +3.
3. Don’t worry about attributes unless needed. If needed, figure which how many scores the NPC is GOOD at, and assign a bonus of +2 (ie a stat score of 14 or 15) for those stats. Everything else, assume average.
'Typical' 16 point buy NPC : 1 GOOD, 5 average.
'Competent' 20 point buy NPC: 2 GOOD, 4 average
'Elite' 24 point buy NPC: 3 GOOD, 3 average
Higher level NPCs may if desired be better than +2 bonus in their single best stat. Note though that a character could advance from 1st to 20th without ever increasing a stat bonus, by raising odd scores to even, so only do this if you want the NPC to stand out as remarkable or present a larger combat threat.
Assuming the stat started at 14, and points are added at 4th, 8th, 12th, 16th & 20th level, the best-possible stat bonuses are as follows:
Level 1-7: +2
Level 8-15: +3
Level 16-20: +4
The GM can assign stat-enhancing magic items to higher level NPCs if desired.
2. Don’t worry about FEATS until needed in play, combat or otherwise. Feats hide a multitude of sins. Eg if the NPC is a melee brute he probably has Power Attack. High-level Fighters have Weapon Specialisation. Archers may have Rapid Shot. Don't sweat the small stuff.
3. Hit Points.
If combat is needed, assume hit points are slightly above or below average (Level multiplied by half of hit die number; round either up or down). I usually round up for individual NPCs, for groups rounding half up & half down gives some nice variation, and helps prevent players working out exactly how many hp the enemy have!
For D&D PCs:
Hit Die CON bonus HP/level, rounded up.
d6 0 4
d6 +2 6
d8 0 5
d8 +2 7
d10 0 6
d10 +2 8
d12 +2 9
BAB is = level, 3/4ths level, or ½ level, based on class. Armour class is = armour.
4. Saving throws.
Good saves = (Level/2)+2, rounded down.
Poor save = (Level/3), rounded down.
Remember to apply the stat bonus if the save falls under a good (+2) stat score.
6. If NPC is a monster, and you EXPECT to get into combat with them, write down AC, touch AC, speed, Melee and Ranged attack, damage, and hit points. That’s it. Figure out feats and skills JUST like you do for other NPCs.
You will wind up with characters that are only 80% accurate. Will this matter? NO. But you will wind up with generic monsters and PNC's that took you all of 30 seconds to stat, that are playable, and for whom your players won’t be able to tell the difference.
Typical 'Good' (+2) stats (D&D), & Good saves:
Class / Good Stats/ Good Saves
Barbarian STR CON DEX / Fort
Bard CHA DEX INT / Ref Will
Cleric WIS CON STR / Fort Will
Druid WIS CHA DEX / Fort Will
Fighter STR CON DEX / Fort
Monk WIS DEX STR / Fort Ref Will
Paladin STR CHA WIS / Fort
Ranger DEX CON STR / Fort Ref
Rogue DEX INT STR / Ref
Sorcerer CHA DEX CON / Will
Wizard INT DEX CON / Will
Aristocrat CHA WIS STR / Will