fix(Core/Groups): Level restriction on allowing raid groups (#12110)

This commit is contained in:
Kitzunu
2022-06-21 18:18:03 +02:00
committed by GitHub
parent 345f3a4b5c
commit 73bd2b446c
4 changed files with 28 additions and 0 deletions

View File

@@ -18,6 +18,7 @@
#include "Group.h"
#include "Battleground.h"
#include "BattlegroundMgr.h"
#include "Config.h"
#include "DatabaseEnv.h"
#include "GameTime.h"
#include "GroupMgr.h"
@@ -278,6 +279,16 @@ void Group::ConvertToLFG(bool restricted /*= true*/)
SendUpdate();
}
bool Group::CheckLevelForRaid()
{
for (member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr)
if (Player* player = ObjectAccessor::FindPlayer(citr->guid))
if (player->getLevel() < sConfigMgr->GetOption<int32>("Group.Raid.LevelRestriction", 10))
return true;
return false;
}
void Group::ConvertToRaid()
{
m_groupType = GroupType(m_groupType | GROUPTYPE_RAID);

View File

@@ -245,6 +245,7 @@ public:
uint8 GetMemberGroup(ObjectGuid guid) const;
void ConvertToLFG(bool restricted = true);
bool CheckLevelForRaid();
void ConvertToRaid();
void SetBattlegroundGroup(Battleground* bg);

View File

@@ -621,6 +621,12 @@ void WorldSession::HandleGroupRaidConvertOpcode(WorldPacket& /*recvData*/)
return;
/** error handling **/
if (group->CheckLevelForRaid())
{
SendPartyResult(PARTY_OP_INVITE, "", ERR_RAID_DISALLOWED_BY_LEVEL);
return;
}
if (!group->IsLeader(GetPlayer()->GetGUID()) || group->GetMembersCount() < 2 || group->isLFGGroup()) // pussywizard: not allowed for lfg groups, it is either raid from the beginning or not!
return;
/********************/