Absorption cleanup
Currently, absorption shields are partially generalized, but there was still a wealth of absolutely identical code copy/pasted 3 times. This unifies on_damage and adjust_gfx into file-level functions to be consistent with the rest of the code there. Code relevant to spiked shields is also removed, because spiked shields are long gone.
This is the part of refactoring damage-connected code to be more consistent and modular.