There’s a danger of misunderstanding here. The file format has been changed a bit, but the custom pads are similar in 5.1 and 5.99. Only the UI workflow has been changed. If the footprints are created programmatically it works in the same way in both versions, sans the small file format changes which aren’t directly related to custom pads.
For comparison, here are custom pads made in 5.1 and 5.99:
(pad 1 thru_hole custom (at 0 0) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask)
(options (clearance outline) (anchor circle))
(primitives
(gr_poly (pts
(xy 2 2) (xy -1 2) (xy -1 -2) (xy 2 -2)) (width 0.1))
))
(pad "1" thru_hole custom (at 0 0) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask)
(options (clearance outline) (anchor circle))
(primitives
(gr_poly (pts
(xy 2 2)
(xy -1 2)
(xy -1 -2)
(xy 2 -2)
) (width 0.12) (fill yes))
) (tstamp db90bdd3-2ac6-43eb-95b3-a2e8557f9494))
As you can see, the differences aren’t related to the custom pad, but to pads and graphic shapes in general. The parts which make the pad a “custom” pad are exactly identical.