diff --git a/Source/Game/Entities/Player/Player.Items.cs b/Source/Game/Entities/Player/Player.Items.cs index 327327fa7..ab821aa3e 100644 --- a/Source/Game/Entities/Player/Player.Items.cs +++ b/Source/Game/Entities/Player/Player.Items.cs @@ -3387,7 +3387,7 @@ namespace Game.Entities } ulong price = 0; - if (crItem.IsGoldRequired(pProto) && pProto.GetBuyPrice() > 0) //Assume price cannot be negative (do not know why it is int32) + if (pProto.GetBuyPrice() > 0) //Assume price cannot be negative (do not know why it is int32) { float buyPricePerItem = (float)pProto.GetBuyPrice() / pProto.GetBuyCount(); ulong maxCount = (ulong)(PlayerConst.MaxMoneyAmount / buyPricePerItem); @@ -3400,6 +3400,7 @@ namespace Game.Entities // reputation discount price = (ulong)Math.Floor(price * GetReputationPriceDiscount(creature)); + price = pProto.GetBuyPrice() > 0 ? Math.Max(1ul, price) : price; int priceMod = GetTotalAuraModifier(AuraType.ModVendorItemsPrices); if (priceMod != 0) diff --git a/Source/Game/Handlers/NPCHandler.cs b/Source/Game/Handlers/NPCHandler.cs index 3d7f17f37..0150701ee 100644 --- a/Source/Game/Handlers/NPCHandler.cs +++ b/Source/Game/Handlers/NPCHandler.cs @@ -659,7 +659,8 @@ namespace Game continue; } - int price = (int)(vendorItem.IsGoldRequired(itemTemplate) ? Math.Floor(itemTemplate.GetBuyPrice() * discountMod) : 0); + ulong price = (ulong)Math.Floor(itemTemplate.GetBuyPrice() * discountMod); + price = itemTemplate.GetBuyPrice() > 0 ? Math.Max(1ul, price) : price; int priceMod = GetPlayer().GetTotalAuraModifier(AuraType.ModVendorItemsPrices); if (priceMod != 0)