Refactor multi-type damage (with unit tests) and damage resistance.