diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiAuctionBidding.java b/src/main/java/noppes/npcs/client/gui/player/GuiAuctionBidding.java index 61634bb0a..5b74ad3c3 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiAuctionBidding.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiAuctionBidding.java @@ -126,7 +126,7 @@ public class GuiAuctionBidding extends GuiAuctionInterface implements ISubGuiLis private void openBidSubGui() { if (listing == null) return; long minBid = listing.getMinimumBid(AuctionClientConfig.getMinBidIncrement()); - setSubGui(new SubGuiAuctionBid(listing.id, minBid, playerBalance)); + setSubGui(new SubGuiAuctionBid(listing.id, minBid, listing.buyoutPrice, playerBalance)); } private void openBuyNowSubGui() { diff --git a/src/main/java/noppes/npcs/client/gui/player/SubGuiAuctionBid.java b/src/main/java/noppes/npcs/client/gui/player/SubGuiAuctionBid.java index 8d7ef3ed4..2bb766415 100644 --- a/src/main/java/noppes/npcs/client/gui/player/SubGuiAuctionBid.java +++ b/src/main/java/noppes/npcs/client/gui/player/SubGuiAuctionBid.java @@ -23,14 +23,16 @@ public class SubGuiAuctionBid extends SubGuiInterface implements ITextfieldListe private final String listingId; private final long minimumBid; + private final long buyoutPrice; private final long playerBalance; private long bidAmount; private boolean successful = false; private String errorMessage = null; - public SubGuiAuctionBid(String listingId, long minimumBid, long playerBalance) { + public SubGuiAuctionBid(String listingId, long minimumBid, long buyoutPrice, long playerBalance) { this.listingId = listingId; this.minimumBid = minimumBid; + this.buyoutPrice = buyoutPrice; this.playerBalance = playerBalance; this.bidAmount = minimumBid; @@ -129,6 +131,12 @@ public class SubGuiAuctionBid extends SubGuiInterface implements ITextfieldListe return; } + if (buyoutPrice > 0 && bidAmount >= buyoutPrice) { + errorMessage = StatCollector.translateToLocal("auction.error.bidExceedsBuyout"); + updateErrorLabel(); + return; + } + // Send bid packet AuctionActionPacket.placeBid(listingId, bidAmount); successful = true; diff --git a/src/main/java/noppes/npcs/controllers/AuctionController.java b/src/main/java/noppes/npcs/controllers/AuctionController.java index dfa64b4ac..8bf06343f 100644 --- a/src/main/java/noppes/npcs/controllers/AuctionController.java +++ b/src/main/java/noppes/npcs/controllers/AuctionController.java @@ -585,6 +585,11 @@ public class AuctionController implements IAuctionHandler { return "Bid must be at least " + minBid + " " + ConfigMarket.CurrencyName + "."; } + // Prevent bidding at or above buyout price + if (listing.hasBuyout() && bidAmount >= listing.buyoutPrice) { + return "Your bid meets or exceeds the buyout price. Use Buy Now instead."; + } + // Check currency PlayerData playerData = PlayerData.get(player); if (playerData == null) { diff --git a/src/main/resources/assets/customnpcs/lang/en_US.lang b/src/main/resources/assets/customnpcs/lang/en_US.lang index ff1899b19..2e83deb22 100644 --- a/src/main/resources/assets/customnpcs/lang/en_US.lang +++ b/src/main/resources/assets/customnpcs/lang/en_US.lang @@ -2247,6 +2247,7 @@ auction.error.notEnoughCurrency=Not enough currency! auction.error.bidTooLow=Bid must be at least %s. auction.error.blacklisted=This item cannot be listed on the Auction House. auction.error.boundItem=Bound items cannot be listed on the Auction House. +auction.error.bidExceedsBuyout=Bid meets or exceeds buyout price. Use Buy Now instead. # Navigation auction.nav.listings=Browse Auctions