In the UNIT code there are flags for "Drop Last Item (10b)" and "Monster Template (1b)". If you set the flag for Monster Template, instead of using the Class byte as the actual class, it treats the Class byte as the ID of a class set.
UNIT Char Class 0x0 Level(etc) coords *1b* etc
Venno has a nightmare module for these class sets, which are 5 classes with probabilities attached.
e.g. Class set 0:
There is also a table for each class, specifying how the inventories are to be filled:
e.g. Revenant has 100% chance of Slot 1 having an item from Item Group 0x15 using Probability Group 1
and 10% chance of Slot 2 having an item from Item Group 0x1F using Probability Group 2
The Item Groups and Probability groups themselves are in separate tables:
Slot 1's Item Group is 0x15 (Rotten Claw/Fetid Claw) using Probability Group 1 (95/5/0/0/0)
Slot 2's Item Group is 0x1F (1/5/10/50/100 Gold) using Probability Group 2 (5/10/30/40/15)