aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDehravor <dehravor@gmail.com>2014-04-25 20:52:17 +0200
committerDehravor <dehravor@gmail.com>2014-04-25 20:52:17 +0200
commit59a84951da2bc5c29f238c65cca5c9618fe0ffc7 (patch)
treeec90601c7b53fecee1a3fca46e848ee6c5c727af /src
parent9c68103c2179c4946de753ca8151e5a7143ca143 (diff)
Core/Trade: Correction of distance checking
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Object/Object.h1
-rw-r--r--src/server/game/Entities/Player/Player.cpp3
-rw-r--r--src/server/game/Handlers/TradeHandler.cpp9
3 files changed, 9 insertions, 4 deletions
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h
index 208077e51cb..66cdd16bb6a 100644
--- a/src/server/game/Entities/Object/Object.h
+++ b/src/server/game/Entities/Object/Object.h
@@ -33,6 +33,7 @@
#define INTERACTION_DISTANCE 5.0f
#define ATTACK_DISTANCE 5.0f
#define INSPECT_DISTANCE 28.0f
+#define TRADE_DISTANCE 11.11f
#define MAX_VISIBILITY_DISTANCE SIZE_OF_GRIDS // max distance for visible objects
#define SIGHT_RANGE_UNIT 50.0f
#define DEFAULT_VISIBILITY_DISTANCE 90.0f // default visible distance, 90 yards on continents
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 94f212e6051..1c6c01270c1 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -6765,9 +6765,6 @@ bool Player::UpdatePosition(float x, float y, float z, float orientation, bool t
if (GetGroup())
SetGroupUpdateFlag(GROUP_UPDATE_FLAG_POSITION);
- if (GetTrader() && !IsWithinDistInMap(GetTrader(), INTERACTION_DISTANCE))
- GetSession()->SendCancelTrade();
-
CheckAreaExploreAndOutdoor();
return true;
diff --git a/src/server/game/Handlers/TradeHandler.cpp b/src/server/game/Handlers/TradeHandler.cpp
index 28a511ad9d3..4372de9eafe 100644
--- a/src/server/game/Handlers/TradeHandler.cpp
+++ b/src/server/game/Handlers/TradeHandler.cpp
@@ -276,6 +276,13 @@ void WorldSession::HandleAcceptTradeOpcode(WorldPacket& /*recvPacket*/)
// set before checks for propertly undo at problems (it already set in to client)
my_trade->SetAccepted(true);
+ if (!_player->IsWithinDistInMap(trader, TRADE_DISTANCE, false))
+ {
+ SendTradeStatus(TRADE_STATUS_TARGET_TO_FAR);
+ my_trade->SetAccepted(false);
+ return;
+ }
+
// not accept case incorrect money amount
if (!_player->HasEnoughMoney(my_trade->GetMoney()))
{
@@ -648,7 +655,7 @@ void WorldSession::HandleInitiateTradeOpcode(WorldPacket& recvPacket)
return;
}
- if (!pOther->IsWithinDistInMap(_player, 10.0f, false))
+ if (!pOther->IsWithinDistInMap(_player, TRADE_DISTANCE, false))
{
SendTradeStatus(TRADE_STATUS_TARGET_TO_FAR);
return;