Feature request: prevent selling items lower than vendor price
MrMartiniMo opened this issue ยท 3 comments
Is your feature request related to a problem? Please describe.
Sometimes it happens that players put items in the auction house at a loss, just because they want to be cheaper than the lowest seller. So it happens that the items are put in cheaper than they would be worth at the vendor.
Describe the solution you'd like
It would be good if there is a setting that prevents creating an auction with a loss.
Quick and dirty solution
There is a function that returns the button state for creating an auction. https://github.com/Auctionator/Auctionator/blob/master/Source_Mainline/Tabs/Selling/Mixins/SaleItem.lua#L482
Here it would be possible to add another check to prevent selling below the vendor price.
function AuctionatorSaleItemMixin:GetPostButtonState()
return
self.itemInfo ~= nil and
self.itemInfo.count > 0 and
C_Item.DoesItemExist(self.itemInfo.location) and
-- Sufficient money to cover deposit
GetMoney() > self:GetDeposit() and
-- Valid quantity
self.Quantity:GetNumber() > 0 and
self.Quantity:GetNumber() <= self:GetPostLimit() and
-- Positive price
self.Price:GetAmount() > 0 and
-- Price is higher than vendor price + deposit
self.Price:GetAmount() > (select(11, GetItemInfo(self.itemInfo.itemLink)) + self:GetDeposit()) and
-- Bid price is not bigger than buyout
self.BidPrice:GetAmount() <= self.Price:GetAmount() and
-- Not throttled (to avoid silent post failure)
Auctionator.AH.IsNotThrottled()
end
Reviewing this request, requirements for the feature:
- Shouldn't be any confusion about why the posting is blocked for a user
- The message about the vendor price being the better option should interrupt the posting so it doesn't get ignored.
- Should be turned on by default so all users are protected.
Adding a tooltip to the post button to inform a user why it is disabled would solve 1 and 2.
Another option would be a dialog popping up to get the user to confirm the post if its below the vendor price + deposit amount.