aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Object/Object.h1
-rw-r--r--src/server/game/Handlers/ArenaTeamHandler.cpp22
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp18
3 files changed, 34 insertions, 7 deletions
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h
index d55e357de1d..bb6686aa2ad 100644
--- a/src/server/game/Entities/Object/Object.h
+++ b/src/server/game/Entities/Object/Object.h
@@ -32,6 +32,7 @@
#define CONTACT_DISTANCE 0.5f
#define INTERACTION_DISTANCE 5.0f
#define ATTACK_DISTANCE 5.0f
+#define INSPECT_DISTANCE 28.0f
#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/Handlers/ArenaTeamHandler.cpp b/src/server/game/Handlers/ArenaTeamHandler.cpp
index f3aedeeeb48..632bd02def0 100644
--- a/src/server/game/Handlers/ArenaTeamHandler.cpp
+++ b/src/server/game/Handlers/ArenaTeamHandler.cpp
@@ -37,15 +37,23 @@ void WorldSession::HandleInspectArenaTeamsOpcode(WorldPacket& recvData)
recvData >> guid;
TC_LOG_DEBUG("network", "Inspect Arena stats (GUID: %u TypeId: %u)", GUID_LOPART(guid), GuidHigh2TypeId(GUID_HIPART(guid)));
- if (Player* player = ObjectAccessor::FindPlayer(guid))
+ Player* player = ObjectAccessor::FindPlayer(guid);
+
+ if (!player)
+ return;
+
+ if (!GetPlayer()->IsWithinDistInMap(player, INSPECT_DISTANCE, false))
+ return;
+
+ if (GetPlayer()->IsValidAttackTarget(player))
+ return;
+
+ for (uint8 i = 0; i < MAX_ARENA_SLOT; ++i)
{
- for (uint8 i = 0; i < MAX_ARENA_SLOT; ++i)
+ if (uint32 a_id = player->GetArenaTeamId(i))
{
- if (uint32 a_id = player->GetArenaTeamId(i))
- {
- if (ArenaTeam* arenaTeam = sArenaTeamMgr->GetArenaTeamById(a_id))
- arenaTeam->Inspect(this, player->GetGUID());
- }
+ if (ArenaTeam* arenaTeam = sArenaTeamMgr->GetArenaTeamById(a_id))
+ arenaTeam->Inspect(this, player->GetGUID());
}
}
}
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index 4fd1d516d31..1b04c89b338 100644
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -1184,6 +1184,12 @@ void WorldSession::HandleInspectOpcode(WorldPacket& recvData)
return;
}
+ if (!GetPlayer()->IsWithinDistInMap(player, INSPECT_DISTANCE, false))
+ return;
+
+ if (GetPlayer()->IsValidAttackTarget(player))
+ return;
+
uint32 talent_points = 0x47;
uint32 guid_size = player->GetPackGUID().wpos();
WorldPacket data(SMSG_INSPECT_TALENT, guid_size+4+talent_points);
@@ -1215,6 +1221,12 @@ void WorldSession::HandleInspectHonorStatsOpcode(WorldPacket& recvData)
return;
}
+ if (!GetPlayer()->IsWithinDistInMap(player, INSPECT_DISTANCE, false))
+ return;
+
+ if (GetPlayer()->IsValidAttackTarget(player))
+ return;
+
WorldPacket data(MSG_INSPECT_HONOR_STATS, 8+1+4*4);
data << uint64(player->GetGUID());
data << uint8(player->GetHonorPoints());
@@ -1641,6 +1653,12 @@ void WorldSession::HandleQueryInspectAchievements(WorldPacket& recvData)
if (!player)
return;
+ if (!GetPlayer()->IsWithinDistInMap(player, INSPECT_DISTANCE, false))
+ return;
+
+ if (GetPlayer()->IsValidAttackTarget(player))
+ return;
+
player->SendRespondInspectAchievements(_player);
}