Um... I am not sure if I agree with range_weapon(item) being useless... unless all moxie weapons are now, and will (likely) forever be ranged weapons. If that is true then range_weapon(item) probably is useless. However weapon_type is still useful as returning the type of weapon it is (crossbow,sword, etc.) If I were to make any changes I would proably replace string weapon_type(item) : Which returns sword, crossbow etc.. with string item_type(item) which would accept any type of weapon and return things like Sword, crossbow, shield, off-hand, booze, food, combat item etc. And create a new function weapon_stat(item) which returns the muscle, myst or moxie (of course this one would complety replace ranged_weapon if all moxie weapons are ranged.)
But that's just my two cents, and I am sure you know better than me what is possible and what you are willing to do.