diff options
-rw-r--r-- | src/server/game/AuctionHouse/AuctionHouseMgr.cpp | 29 | ||||
-rw-r--r-- | src/server/game/AuctionHouse/AuctionHouseMgr.h | 2 | ||||
-rwxr-xr-x | src/server/game/Server/Protocol/Handlers/AuctionHouseHandler.cpp | 8 |
3 files changed, 15 insertions, 24 deletions
diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index e506f8c608b..04970e79860 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -63,28 +63,19 @@ AuctionHouseObject * AuctionHouseMgr::GetAuctionsMap(uint32 factionTemplateId) return &mNeutralAuctions; } -uint32 AuctionHouseMgr::GetAuctionDeposit(AuctionHouseEntry const* entry, uint32 time, Item *pItem) +uint32 AuctionHouseMgr::GetAuctionDeposit(AuctionHouseEntry const* entry, uint32 time, Item *pItem, uint32 count) { uint32 MSV = pItem->GetProto()->SellPrice; - int32 deposit; - uint32 timeHr = (((time / 60) / 60) / 12); - - if (MSV > 0) - deposit = (int32)floor((double)MSV * (((double)(entry->depositPercent * 3) / 100.0f * (double)sWorld.getRate(RATE_AUCTION_DEPOSIT) * (double)pItem->GetCount()))) * timeHr; - else - deposit = 0; - - sLog.outDebug("Sellprice: %u / Depositpercent: %f / AT1: %u / AT2: %u / AT3: %u / Count: %u", MSV, ((double)entry->depositPercent / 100.0f), time, MIN_AUCTION_TIME, timeHr, pItem->GetCount() ); - if (deposit > 0) - { - sLog.outDebug("Deposit: %u", deposit); - return deposit; - } - else - { - sLog.outDebug("Deposit: 0"); + if (MSV <= 0) return 0; - } + uint32 timeHr = (((time / 60) / 60) /12); + float multiplier = (float)(entry->depositPercent * 3) / 100.0f; + uint32 deposit = ((uint32)((float)MSV * multiplier * (float)count)/3) * 3 * timeHr; + sLog.outDebug("MSV: %u", MSV); + sLog.outDebug("Items: %u", count); + sLog.outDebug("Multiplier: %f", multiplier); + sLog.outDebug("Deposit: %u", deposit); + return deposit; } //does not clear ram diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.h b/src/server/game/AuctionHouse/AuctionHouseMgr.h index ff8fc4d0773..3add23e856c 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.h +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.h @@ -147,7 +147,7 @@ class AuctionHouseMgr void SendAuctionOutbiddedMail(AuctionEntry * auction, uint32 newPrice, Player* newBidder, SQLTransaction& trans); void SendAuctionCancelledToBidderMail(AuctionEntry* auction, SQLTransaction& trans); - static uint32 GetAuctionDeposit(AuctionHouseEntry const* entry, uint32 time, Item *pItem); + static uint32 GetAuctionDeposit(AuctionHouseEntry const* entry, uint32 time, Item *pItem, uint32 count); static AuctionHouseEntry const* GetAuctionHouseEntry(uint32 factionTemplateId); public: diff --git a/src/server/game/Server/Protocol/Handlers/AuctionHouseHandler.cpp b/src/server/game/Server/Protocol/Handlers/AuctionHouseHandler.cpp index 3fbfbfe6980..dc75bdbb6f3 100755 --- a/src/server/game/Server/Protocol/Handlers/AuctionHouseHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/AuctionHouseHandler.cpp @@ -115,11 +115,11 @@ void WorldSession::SendAuctionOwnerNotification(AuctionEntry* auction) void WorldSession::HandleAuctionSellItem(WorldPacket & recv_data) { uint64 auctioneer, item; - uint32 etime, bid, buyout; + uint32 etime, bid, buyout, count; recv_data >> auctioneer; recv_data.read_skip<uint32>(); // const 1? recv_data >> item; - recv_data.read_skip<uint32>(); // unk 3.2.2, const 1? + recv_data >> count; // 3.2.2, number of items being auctioned recv_data >> bid; recv_data >> buyout; recv_data >> etime; @@ -201,7 +201,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket & recv_data) AuctionHouseObject* auctionHouse = sAuctionMgr.GetAuctionsMap(pCreature->getFaction()); //we have to take deposit : - uint32 deposit = sAuctionMgr.GetAuctionDeposit(auctionHouseEntry, etime, it); + uint32 deposit = sAuctionMgr.GetAuctionDeposit(auctionHouseEntry, etime, it, count); if (!pl->HasEnoughMoney(deposit)) { SendAuctionCommandResult(0, AUCTION_SELL_ITEM, AUCTION_NOT_ENOUGHT_MONEY); @@ -211,7 +211,7 @@ void WorldSession::HandleAuctionSellItem(WorldPacket & recv_data) if (GetSecurity() > SEC_PLAYER && sWorld.getBoolConfig(CONFIG_GM_LOG_TRADE)) { sLog.outCommand(GetAccountId(),"GM %s (Account: %u) create auction: %s (Entry: %u Count: %u)", - GetPlayerName(),GetAccountId(),it->GetProto()->Name1,it->GetEntry(),it->GetCount()); + GetPlayerName(),GetAccountId(),it->GetProto()->Name1,it->GetEntry(),count); } pl->ModifyMoney(-int32(deposit)); |