Submits a bid for this tick for current player. This is not a guarantee that it will be accepted!
        If other players submit a higher bid this same tick, the bid won't be counted. Try again next tick if it's not
        too high!
        :param int owner_id: id of owner who is submitting the bid
        :param int bid: bid amount

        :raise InvalidActionError: if the action is not allowed according to the rules. See the error message
            for details.

def place_bid(self, owner_id, bid):
        """
        Submits a bid for this tick for current player. This is not a guarantee that it will be accepted!
        If other players submit a higher bid this same tick, the bid won't be counted. Try again next tick if it's not
        too high!
        :param int owner_id: id of owner who is submitting the bid
        :param int bid: bid amount

        :raise InvalidActionError: if the action is not allowed according to the rules. See the error message
            for details.
        """

        if self.state != AuctionState.BID:
            raise InvalidActionError("Bid was attempted, but it is not currently time to submit bids.")
        elif self.bid >= bid:
            raise InvalidActionError("Bid amount " + str(bid) + " must be greater than current bid of " + str(self.bid))
        elif not self.owners[owner_id].can_buy(self.nominee, bid):
            raise InvalidActionError("The owner with index " + str(owner_id) +
                                     " cannot afford a bid of " + str(bid) + " for player " + self.nominee.name +
                                     " or cannot actually buy this player (due to "
                                     "not having any free slots)")

        # success, add their bid to the current tick
        self.tickbids[owner_id] = bid