diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-08-02 13:25:41 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2024-08-02 13:25:41 +0200 |
commit | e59eef5432c7b70679d33f4911c88d0f7d75fd39 (patch) | |
tree | fe9bce9c82496589facec3719b3f2943d8295e76 /src/server/game/Handlers/GroupHandler.cpp | |
parent | 7fb9168d57f378075b0f6692ea7ad822c1d8e43d (diff) |
Core/PacketIO: Updated to 11.0.0
Diffstat (limited to 'src/server/game/Handlers/GroupHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/GroupHandler.cpp | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp index f9ad1daa6f1..a1cc44531c2 100644 --- a/src/server/game/Handlers/GroupHandler.cpp +++ b/src/server/game/Handlers/GroupHandler.cpp @@ -20,6 +20,7 @@ #include "DatabaseEnv.h" #include "Group.h" #include "GroupMgr.h" +#include "LFG.h" #include "Log.h" #include "Loot.h" #include "MiscPackets.h" @@ -664,8 +665,24 @@ bool CanSendPing(Player const& player, PingSubjectType type, Group const*& group if (!group) return false; - if (group->IsRestrictPingsToAssistants() && !group->IsLeader(player.GetGUID()) && !group->IsAssistant(player.GetGUID())) - return false; + if (group->IsLeader(player.GetGUID())) + return true; + + switch (group->GetRestrictPings()) + { + case RestrictPingsTo::None: + return true; + case RestrictPingsTo::Lead: + return false; + case RestrictPingsTo::Assist: + if (!group->IsAssistant(player.GetGUID())) + return false; + break; + case RestrictPingsTo::TankHealer: + if (!(group->GetLfgRoles(player.GetGUID()) & (lfg::PLAYER_ROLE_TANK | lfg::PLAYER_ROLE_HEALER))) + return false; + break; + } return true; } @@ -680,7 +697,7 @@ void WorldSession::HandleSetRestrictPingsToAssistants(WorldPackets::Party::SetRe if (!group->IsLeader(GetPlayer()->GetGUID())) return; - group->SetRestrictPingsToAssistants(setRestrictPingsToAssistants.RestrictPingsToAssistants); + group->SetRestrictPingsTo(setRestrictPingsToAssistants.RestrictTo); } void WorldSession::HandleSendPingUnit(WorldPackets::Party::SendPingUnit const& pingUnit) @@ -725,6 +742,7 @@ void WorldSession::HandleSendPingWorldPoint(WorldPackets::Party::SendPingWorldPo broadcastPingWorldPoint.Point = pingWorldPoint.Point; broadcastPingWorldPoint.Type = pingWorldPoint.Type; broadcastPingWorldPoint.PinFrameID = pingWorldPoint.PinFrameID; + broadcastPingWorldPoint.Transport = pingWorldPoint.Transport; broadcastPingWorldPoint.Write(); for (GroupReference const* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next()) |