I would be sorely tempted to standardise it all, so every item of armour has a head, torso, arm, leg, and foot value. That way, you could just use a 2D array against the item itself, to work out the armour rating. Just thinking that the code might get a bit more complex if you don't make the assumption that armour can protect any part, or several parts of the body. You would need to know the damage at which part of the body, but then you can set an index to that particular area - if you have Item[Id,Area] for example, and head is always Area 1, then you'd set an index variable to 1 and get the armour value directly.
Know what I mean? - instead of saying this helmet protects the head at a rating of 10.0 - you'd say this helmet protects the heat at 10.0, the torso at 1.0, the legs at 0.0, arms at 0.0. A magic cloak for example, might actually protect the torso, arms and legs... it's a lot easier to just grab the armour values and apply them, than have to work out which area the armour value applies to. Mostly, it's good practice to avoid unnecessary string comparisons, especially with something that is checked very often. This could allow you to apply damage to more than one area at a time - like a fireball might hit someone in the torso, but also cause damage to other body parts... some weapons might have ambient damage that can be applied, magic, fire, ice etc. And if you have no armour on your feet, maybe the legs get damage applied as well. You would have to code this stuff of course, but probably only for when an attack has happened, and you get a lot of control over things and can add intricate rules without needing lots of repetitive code. The array would take care of the tedious stuff, and you'd be left to code the intricate rules, but there's no reason why that can't be neat and efficient.
I think that people are getting more and more into games that have complex rule sets like that, when gear isn't just a positive or negative value. Seeing more complex rule sets in survival RPG games these days for example.
The code is dark and full of errors