So I took the time to test several armors and clothes against monsters and well I can say that I think the whole way in which armor works is in serious need of a rework. Right now, it seems that your armor level is a flat reduction of the armor rating of the piece of clothing that blocked the attack to whatever damage was rolled by your attacker, this is not exactly the case, but judging by the time I spent testing, it works very similarly. This is not a very good way to calculate armor, and it can be easily illustrated.
A normal zombie does 2d3 of damage as a normal attack. This pair of die have the following distribution:
Assuming high coverage clothing, this means that an item with 2 protection (most shirts) will block nearly 1/3d of zombie attacks and reduce the max possible damage dealt to 4, an item with 4 (some shirts, most pants) will block 2/3ds and reduce max damage dealt to 2, and an item with 6+ (all sort of jackets, reinforced cargo pants) will completely negate the attack.
This is somewhat overkill for normal clothes and its without taking layering into account.
And its not only a problem with basic monsters.
King of beasts, the almighty Jabberwock, does 4d8+3 damage in its normal attack. This has the following distribution:
Well as you can see this results in items with more than 21 armor blocking more than 50% of attacks, and something like a normal survivor (30 protection) suit blocks everything but 3.05% of attacks, well in theory, Jabberwocks have a very nasty tendency to gouge your eyes out with their claws, but if you pair those with a survivor helmet and welding goggles you can negate almost every single attack the Jabberwock will launch you, sure survivor suits are late game gear, but Jabberwocks are the most dangerous monster ingame and are meant to be dangerous to late game players, not some sort of cakewalk. It will kill you from a headshots after a lot of turns (nothing seems to actually cover the eyes with 100% efficiency), but a survivor who made that late game gear can kill it in less than 10 turns with a katana or a rifle.
And well its not like that made sense from a realism point of view either, its obvious that if something like a Jabberwock or Zombie hulk punches you in the face you are going to become jell-o even if you are wearing state of the art powered armor not to mention custom made military gear (Its not that I advocate instakills it would not be so fun to instantly die to those; but neither should you be able to tank 20+ hits before dying from them). And how much protection does a leather jacket actually offers you? Sure its tough, but you can still get punched through it, and most leather jackets arent thick enough to to prevent bites from tearing muscles , not to mention that leather is not nearly uncommon enough warrant the protection it grants you. Should military gear make you completely immune to the most common enemy?
Now I don’t really know how we should come across fixing it, well I kinda know actually, armor should probably reduce damage based in percentages instead of flat damage reductions, as that would mean that you’ll take at least some damage from the majority of attacks but I wouldn’t know what equations should it use, as Its obvious that armors over certain thresholds should offer absolute protection from the majority of low damage attacks (namely plate armor and powered armor) and even then you should take damage while wearing those If you manage to get overwhelmed by zombies. Perhaps allow monsters to knock you of your feet and negate most armor benefits when you are downed (zombies knock you to the floor and rip your throat out like the animals they are supposed to be).
Another thing we could have is giving armor more levels of coverage (as an example: modern armor is much more protective to the back and front (were the ceramic plates are located. while leaving the sides more exposed. And we could simulate this by saying that 70% of a MBR vest offers good protection (were the ceramic plates are), 25% offers protection equivalent to just kevlar and 5% is exposed).