AttackType is enum again, added attack factory