def METHOD_NAME(self, count):
    """
    Buy up to the configured number of BPs
    Supports buying in both DEV and FATE
    Args:
        count (int): Total to buy
    """
    logger.hr('shipyard_buy')
    prev = 1
    start, count = self._shipyard_buy_calc(prev, count)
    while count > 0:
        if not self._shipyard_buy_enter() or \
                self._shipyard_cannot_strengthen():
            break
        remain = self._shipyard_ensure_index(count)
        if remain is None:
            break
        if self._shipyard_bp_rarity == 'DR':
            self.config.ShipyardDr_LastRun = datetime.now().replace(microsecond=0)
        else:
            self.config.Shipyard_LastRun = datetime.now().replace(microsecond=0)
        self._shipyard_buy_confirm('BP_BUY')
        # Pay for actual amount bought based on 'remain'
        # which also updates 'start' as a result
        # Save into 'prev' for next _shipyard_pay_calc
        start, _ = self._shipyard_pay_calc(prev, (count - remain))
        prev = start
        start, count = self._shipyard_buy_calc(start, remain)