http://www.purediablo.com/forums/showpost.php?p=3938307&postcount=50 said:
The code hasn't been completely rewritten, everything about the skill, slvl etc selection is the same, but in 1.11 (and I guess 1.10 as well, judging from what I've read) theres now a new factor that can limit skills to spawn on certain item types. In 1.09 the only skill that couldnt spawn on items (iirc) was poison dagger, which was a hardcoded check. Now, as RTB mentioned before, the itypea1 column in skills.txt (ONLY itypea1, not the rest if the itypexx columns or the etype ones) tells what items the specific skill can spawn on. However, this new function seems to have been implented rather poorly.
After it has selected a 'skill tier' (see first post) to choose a skill from, it loops SIX TIMES (for each skill) to see if it can find a valid skill (a valid skill must have matching itypea1 to the items type and it must not have already been selected). Each loop it randomly selects a new skill from the chosen tier, and checks if it is ok. If, however, it fails all 6 times to find a valid skill, it will STILL go on and select the skill that it tried last. And, it will not add that skill to the selected skills list, so it could select the same skill twice (not sure if it would simply add the skill levels together, or overwrite the first one).
Hopefully this will shed some light on things.