Boats / carts: Fix and improve on_punch functions