The Enhanced Archery snippet has a few bugs. First of all, the acts are wrong:
act( AT_CARNAGE, "$N winces in pain as $e dislodges $p from $s chest.", ch, arrow, NULL, TO_ROOM );
For each act on the 3 body parts, it should not be $N, it should be $n.
Then I ran into this:
if( ( retcode = damage( ch, victim, dam, dt ) ) != rNONE )
No matter what, the ifcheck was always failing, so it would never lodge arrows in body parts. So it was always returning rNONE even though it was doing dmg, and hitting. I spent hours going through breakpoints in damage and this function, but found nothing. So I just checked the last HP to current HP...