Refactored combat module to be more DRY

* Was repeating too much code in some aspects, condensed down and
extracted more common elements.

* Preparing to allow complex chainings and combat phases