diff options
Diffstat (limited to 'src/server/game')
| -rw-r--r-- | src/server/game/Entities/Object/Object.h | 1 | ||||
| -rw-r--r-- | src/server/game/Handlers/ArenaTeamHandler.cpp | 22 | ||||
| -rw-r--r-- | src/server/game/Handlers/MiscHandler.cpp | 18 | 
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);  }  | 
