On a note of memory usage, it seems like other Roguelike’s actually do have a poopton of different monsters. Angband, which I have installed, has around 1200 different creatures including all minor variations of each, including AI and everything else. There has to be a way to shorten the data needed to run these guys.
As far as equipment, if I can abstract things to ignore the visual side of it, I can algorithmically create armors on the fly while using very little total data. Instead of having entries for “Worn Steel Boots” and “Polished Steel Boots”, I have data for “Boots”, and a “Steel” modifier, as well as quality modifiers, so making 5 different sets of boots is just a matter of chosing the right modifiers, instead of picking from 5 different entries. Perhaps monsters can be done the same way?
I imagine at the very least AI can be broken into different packages–follow, run, attack etc, with maybe an overarching group that controls the odds of doing one over the other to define each package. Subtypes–undead/creature/humanoid/whatever would be there, but still there’s fundamentally going to be a name and an image unique to each creature. Hrm.