mirror of
https://github.com/NathanHandley/mod-ah-bot-plus.git
synced 2026-01-13 01:08:37 +00:00
152 lines
5.7 KiB
Diff
152 lines
5.7 KiB
Diff
diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
|
|
index 4aba5703b2..5c9a332016 100644
|
|
--- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
|
|
+++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
|
|
@@ -21,6 +21,9 @@
|
|
#include <vector>
|
|
#include "AvgDiffTracker.h"
|
|
#include "AsyncAuctionListing.h"
|
|
+#ifdef MOD_AH_BOT
|
|
+#include "AuctionHouseBot.h"
|
|
+#endif
|
|
|
|
enum eAuctionHouse
|
|
{
|
|
@@ -139,8 +142,11 @@ void AuctionHouseMgr::SendAuctionSuccessfulMail(AuctionEntry* auction, SQLTransa
|
|
if (owner || owner_accId)
|
|
{
|
|
uint32 profit = auction->bid + auction->deposit - auction->GetAuctionCut();
|
|
-
|
|
+#ifdef MOD_AH_BOT
|
|
+ if (owner && owner->GetGUIDLow() != auctionbot->GetAHBplayerGUID())
|
|
+#else
|
|
if (owner)
|
|
+#endif
|
|
{
|
|
owner->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS, profit);
|
|
owner->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_SOLD, auction->bid);
|
|
@@ -183,7 +189,11 @@ void AuctionHouseMgr::SendAuctionExpiredMail(AuctionEntry* auction, SQLTransacti
|
|
// owner exist
|
|
if (owner || owner_accId)
|
|
{
|
|
+#ifdef MOD_AH_BOT
|
|
+ if (owner && owner->GetGUIDLow() != auctionbot->GetAHBplayerGUID())
|
|
+#else
|
|
if (owner)
|
|
+#endif
|
|
owner->GetSession()->SendAuctionOwnerNotification(auction);
|
|
|
|
MailDraft(auction->BuildAuctionMailSubject(AUCTION_EXPIRED), AuctionEntry::BuildAuctionMailBody(0, 0, auction->buyout, auction->deposit, 0))
|
|
@@ -207,6 +217,11 @@ void AuctionHouseMgr::SendAuctionOutbiddedMail(AuctionEntry* auction, uint32 new
|
|
// old bidder exist
|
|
if (oldBidder || oldBidder_accId)
|
|
{
|
|
+#ifdef MOD_AH_BOT
|
|
+ if (oldBidder && !newBidder)
|
|
+ oldBidder->GetSession()->SendAuctionBidderNotification(auction->GetHouseId(), auction->Id, auctionbot->GetAHBplayerGUID(), newPrice, auction->GetAuctionOutBid(), auction->item_template);
|
|
+#endif // MOD_AH_BOT
|
|
+
|
|
if (oldBidder && newBidder)
|
|
oldBidder->GetSession()->SendAuctionBidderNotification(auction->GetHouseId(), auction->Id, newBidder->GetGUID(), newPrice, auction->GetAuctionOutBid(), auction->item_template);
|
|
|
|
@@ -407,10 +422,16 @@ void AuctionHouseObject::AddAuction(AuctionEntry* auction)
|
|
|
|
AuctionsMap[auction->Id] = auction;
|
|
sScriptMgr->OnAuctionAdd(this, auction);
|
|
+#ifdef MOD_AH_BOT
|
|
+ auctionbot->IncrementItemCounts(auction);
|
|
+#endif
|
|
}
|
|
|
|
bool AuctionHouseObject::RemoveAuction(AuctionEntry* auction)
|
|
{
|
|
+#ifdef MOD_AH_BOT
|
|
+ auctionbot->DecrementItemCounts(auction, auction->item_template);
|
|
+#endif
|
|
bool wasInMap = AuctionsMap.erase(auction->Id) ? true : false;
|
|
|
|
sScriptMgr->OnAuctionRemove(this, auction);
|
|
diff --git a/src/server/game/Mails/Mail.cpp b/src/server/game/Mails/Mail.cpp
|
|
index ef72cbfe2c..2f57ac9687 100644
|
|
--- a/src/server/game/Mails/Mail.cpp
|
|
+++ b/src/server/game/Mails/Mail.cpp
|
|
@@ -15,6 +15,9 @@
|
|
#include "Item.h"
|
|
#include "AuctionHouseMgr.h"
|
|
#include "CalendarMgr.h"
|
|
+#ifdef MOD_AH_BOT
|
|
+#include "AuctionHouseBot.h"
|
|
+#endif
|
|
|
|
MailSender::MailSender(Object* sender, MailStationery stationery) : m_stationery(stationery)
|
|
{
|
|
@@ -168,6 +171,15 @@ void MailDraft::SendMailTo(SQLTransaction& trans, MailReceiver const& receiver,
|
|
|
|
uint32 mailId = sObjectMgr->GenerateMailID();
|
|
|
|
+#ifdef MOD_AH_BOT
|
|
+ if (receiver.GetPlayerGUIDLow() == auctionbot->GetAHBplayerGUID())
|
|
+ {
|
|
+ if (sender.GetMailMessageType() == MAIL_AUCTION) // auction mail with items
|
|
+ deleteIncludedItems(trans, true);
|
|
+ return;
|
|
+ }
|
|
+#endif
|
|
+
|
|
time_t deliver_time = time(NULL) + deliver_delay;
|
|
|
|
//expire time if COD 3 days, if no COD 30 days, if auction sale pending 1 hour
|
|
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
|
|
index 01b1fe0acb..cf3e65bc94 100644
|
|
--- a/src/server/game/World/World.cpp
|
|
+++ b/src/server/game/World/World.cpp
|
|
@@ -76,6 +76,9 @@
|
|
#include "AsyncAuctionListing.h"
|
|
#include "SavingSystem.h"
|
|
#include <VMapManager2.h>
|
|
+#ifdef MOD_AH_BOT
|
|
+#include "AuctionHouseBot.h"
|
|
+#endif
|
|
|
|
ACE_Atomic_Op<ACE_Thread_Mutex, bool> World::m_stopEvent = false;
|
|
uint8 World::m_ExitCode = SHUTDOWN_EXIT_CODE;
|
|
@@ -1635,6 +1638,16 @@ void World::SetInitialWorldSettings()
|
|
sLog->outString("Loading Completed Achievements...");
|
|
sAchievementMgr->LoadCompletedAchievements();
|
|
|
|
+#ifdef MOD_AH_BOT
|
|
+ std::string cfg_file = "mod_ahbot.conf";
|
|
+ std::string cfg_def_file = cfg_file + ".dist";
|
|
+ sConfigMgr->LoadMore(cfg_def_file.c_str());
|
|
+ sConfigMgr->LoadMore(cfg_file.c_str());
|
|
+
|
|
+ // Initialize AHBot settings before deleting expired auctions due to AHBot hooks
|
|
+ auctionbot->InitializeConfiguration();
|
|
+#endif
|
|
+
|
|
///- Load dynamic data tables from the database
|
|
sLog->outString("Loading Item Auctions...");
|
|
sAuctionMgr->LoadAuctionItems();
|
|
@@ -1871,6 +1884,11 @@ void World::SetInitialWorldSettings()
|
|
mgr = ChannelMgr::forTeam(TEAM_HORDE);
|
|
mgr->LoadChannels();
|
|
|
|
+#ifdef MOD_AH_BOT
|
|
+ TC_LOG_INFO("server.loading", "Initialize AuctionHouseBot...");
|
|
+ auctionbot->Initialize();
|
|
+#endif
|
|
+
|
|
uint32 startupDuration = GetMSTimeDiffToNow(startupBegin);
|
|
sLog->outString();
|
|
sLog->outError("WORLD: World initialized in %u minutes %u seconds", (startupDuration / 60000), ((startupDuration % 60000) / 1000));
|
|
@@ -2031,6 +2049,9 @@ void World::Update(uint32 diff)
|
|
// pussywizard: handle auctions when the timer has passed
|
|
if (m_timers[WUPDATE_AUCTIONS].Passed())
|
|
{
|
|
+#ifdef MOD_AH_BOT
|
|
+ auctionbot->Update();
|
|
+#endif
|
|
m_timers[WUPDATE_AUCTIONS].Reset();
|
|
|
|
// pussywizard: handle expired auctions, auctions expired when realm was offline are also handled here (not during loading when many required things aren't loaded yet)
|