Причина:
В функции Group::MasterLoot (файл Group.cpp) сервер формирует список кандидатов через пакет SMSG_LOOT_MASTER_LIST. В коде есть фильтр по дистанции:

if (looter->IsAtGroupRewardDistance(pLootedObject))

Из-за него в список попадают только игроки, находящиеся рядом с трупом/сундуком. В результате мастер-лут не показывает всех участников рейда.

Скорее всего надо:

diff --git a/src/game/Group.cpp b/src/game/Group.cpp
index 1234567..89abcde 100644
--- a/src/game/Group.cpp
+++ b/src/game/Group.cpp
@@ -1450,13 +1450,17 @@ void Group::MasterLoot(Loot* loot, WorldObject* pLootedObject)
WorldPacket data(SMSG_LOOT_MASTER_LIST, 1 + GetMembersCount() * 8);
data << uint8(GetMembersCount());

- for (GroupReference* itr = GetFirstMember(); itr != nullptr; itr = itr->next())
- {
- Player* looter = itr->GetSource();
- if (!looter->IsInWorld())
- continue;
-
- if (looter->IsAtGroupRewardDistance(pLootedObject))
- {
- data << uint64(looter->GetGUID());
- ++real_count;
- }
- }
-
- data.put<uint8>(0, real_count);
+ for (GroupReference* itr = GetFirstMember(); itr != nullptr; itr = itr->next())
+ {
+ Player* looter = itr->GetSource();
+ if (!looter || !looter->IsInWorld())
+ continue;
+
+ // Добавляем всех участников группы/рейда, без проверки дистанции
+ data << uint64(looter->GetGUID());
+ ++real_count;
+ }
+
+ // Обновляем корректное количество игроков
+ data.put<uint8>(0, real_count);