aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Player/Player.cpp7
-rw-r--r--src/server/game/Entities/Player/Player.h2
-rw-r--r--src/server/game/Handlers/TradeHandler.cpp17
-rw-r--r--src/server/game/Server/WorldSession.h2
4 files changed, 9 insertions, 19 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 4bc613bb04d..58f514add16 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -13502,17 +13502,16 @@ bool Player::IsUsingTwoHandedWeaponInOneHand() const
return true;
}
-void Player::TradeCancel(bool sendback)
+void Player::TradeCancel(bool sendback, TradeStatus status /*= TRADE_STATUS_TRADE_CANCELED*/)
{
if (m_trade)
{
Player* trader = m_trade->GetTrader();
- // send yellow "Trade canceled" message to both traders
if (sendback)
- GetSession()->SendCancelTrade();
+ GetSession()->SendCancelTrade(status);
- trader->GetSession()->SendCancelTrade();
+ trader->GetSession()->SendCancelTrade(status);
// cleanup
delete m_trade;
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index b36b6440e65..5c97be882b7 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1167,7 +1167,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
Player* GetTrader() const;
TradeData* GetTradeData() const { return m_trade; }
- void TradeCancel(bool sendback);
+ void TradeCancel(bool sendback, TradeStatus status = TRADE_STATUS_TRADE_CANCELED);
CinematicMgr* GetCinematicMgr() const { return _cinematicMgr; }
diff --git a/src/server/game/Handlers/TradeHandler.cpp b/src/server/game/Handlers/TradeHandler.cpp
index 048c2930108..4d8588bf7be 100644
--- a/src/server/game/Handlers/TradeHandler.cpp
+++ b/src/server/game/Handlers/TradeHandler.cpp
@@ -62,14 +62,12 @@ void WorldSession::SendTradeStatus(TradeStatusInfo const& info)
void WorldSession::HandleIgnoreTradeOpcode(WorldPacket& /*recvPacket*/)
{
- TC_LOG_DEBUG("network", "WORLD: Ignore Trade {}", _player->GetGUID().ToString());
- // recvPacket.print_storage();
+ _player->TradeCancel(true, TRADE_STATUS_IGNORE_YOU);
}
void WorldSession::HandleBusyTradeOpcode(WorldPacket& /*recvPacket*/)
{
- TC_LOG_DEBUG("network", "WORLD: Busy Trade {}", _player->GetGUID().ToString());
- // recvPacket.print_storage();
+ _player->TradeCancel(true, TRADE_STATUS_BUSY);
}
void WorldSession::SendUpdateTrade(bool trader_data /*= true*/)
@@ -570,13 +568,13 @@ void WorldSession::HandleBeginTradeOpcode(WorldPacket& /*recvPacket*/)
SendTradeStatus(info);
}
-void WorldSession::SendCancelTrade()
+void WorldSession::SendCancelTrade(TradeStatus status)
{
if (PlayerRecentlyLoggedOut() || PlayerLogout())
return;
TradeStatusInfo info;
- info.Status = TRADE_STATUS_TRADE_CANCELED;
+ info.Status = status;
SendTradeStatus(info);
}
@@ -676,13 +674,6 @@ void WorldSession::HandleInitiateTradeOpcode(WorldPacket& recvPacket)
return;
}
- if (pOther->GetSocial()->HasIgnore(GetPlayer()->GetGUID()))
- {
- info.Status = TRADE_STATUS_IGNORE_YOU;
- SendTradeStatus(info);
- return;
- }
-
if (pOther->GetTeam() != _player->GetTeam() &&
(!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_TRADE) &&
!GetPlayer()->GetSession()->HasPermission(rbac::RBAC_PERM_ALLOW_TWO_SIDE_TRADE)))
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 59e311b1cec..7d3ee54ba5f 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -529,7 +529,7 @@ class TC_GAME_API WorldSession
void SendTradeStatus(TradeStatusInfo const& status);
void SendUpdateTrade(bool trader_data = true);
- void SendCancelTrade();
+ void SendCancelTrade(TradeStatus status);
void SendPetitionQueryOpcode(ObjectGuid petitionguid);