I'm not sure how much of this is already implemented/will be implemented but I thought that this would be a good system:
If the arrow/bolt lands on the square of a creature, the computer randomly selects a number from 1 to 7. Depending on the outcome, it would do the following:
7 - 100% miss - flies straight over the creature's head
6 - 10% chance to hit head
5 - 30% chance to hit head, 30% chance to hit the upper body
4 - 50% chance to hit body, 50% chance to hit organs - solid hit
3 - 30% chance to hit legs, 30% chance to hit the lower body
2 - 10% chance to hit feet
1 - 100% miss - thuds into the ground beneath the creature's feet
As you can see the numbers are akin to height above the ground. And when I say upper body, I mean it will select a random part of the upper body to damage, and with organs, it will select a random organ to hit etc. This system would go on top of the current system, so things which affect damage done would still affect it now.
And as dwarves reach certain skill levels, the end results are more and more limited. So a newbie gets all 7, but a legendary crossbow dwarf can only get 3, 4 or 5 per bolt that is there. Although this system is fairly complex, I think it would add a little bit of balance to crossbows as well as some realism.
A more complicated version would be that when the dwarf fires the arrow, it starts at number 4, then after a square or something goes up to 5 and then 6, then 7, then 6 and then down to 1, sort of simulating an arrow's arc. This would mean that at point blank range, almost anyone could score a decent hit, but over longer distances, only legendary crossbow dwarves would be able to get a 4 (as their arc would effectively go 4, 5, 4, 3.
What do you think?