feat(Core/Commands): add .group invites command to toggle accepting g… (#26370)
Co-authored-by: Skjalf <47818697+Nyeriah@users.noreply.github.com>
This commit is contained in:
@@ -701,6 +701,7 @@ enum RBACPermissions
|
||||
RBAC_PERM_COMMAND_SPELLINFO_TARGETS = 937,
|
||||
RBAC_PERM_COMMAND_SPELLINFO_ALL = 938,
|
||||
RBAC_PERM_COMMAND_SERVER_SET_SECURITY = 939,
|
||||
RBAC_PERM_COMMAND_GROUP_INVITES = 940,
|
||||
// custom permissions 1000+
|
||||
RBAC_PERM_MAX
|
||||
};
|
||||
|
||||
@@ -577,6 +577,7 @@ enum PlayerExtraFlags
|
||||
PLAYER_EXTRA_PVP_DEATH = 0x0100, // store PvP death status until corpse creating.
|
||||
PLAYER_EXTRA_SHOW_DK_PET = 0x0400, // Marks if player should see ghoul on login screen
|
||||
PLAYER_EXTRA_GM_SPECTATOR = 0x0800,
|
||||
PLAYER_EXTRA_DECLINE_GROUP_INVITES = 0x1000, // Set when the player opted out of receiving group invites
|
||||
};
|
||||
|
||||
// 2^n values
|
||||
@@ -1171,6 +1172,8 @@ public:
|
||||
void SetBeastMaster(bool on) { if (on) SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); else RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); }
|
||||
[[nodiscard]] bool isAcceptWhispers() const { return m_ExtraFlags & PLAYER_EXTRA_ACCEPT_WHISPERS; }
|
||||
void SetAcceptWhispers(bool on) { if (on) m_ExtraFlags |= PLAYER_EXTRA_ACCEPT_WHISPERS; else m_ExtraFlags &= ~PLAYER_EXTRA_ACCEPT_WHISPERS; }
|
||||
[[nodiscard]] bool IsAcceptGroupInvites() const { return !(m_ExtraFlags & PLAYER_EXTRA_DECLINE_GROUP_INVITES); }
|
||||
void SetAcceptGroupInvites(bool on) { if (on) m_ExtraFlags &= ~PLAYER_EXTRA_DECLINE_GROUP_INVITES; else m_ExtraFlags |= PLAYER_EXTRA_DECLINE_GROUP_INVITES; }
|
||||
[[nodiscard]] bool IsGameMaster() const { return m_ExtraFlags & PLAYER_EXTRA_GM_ON; }
|
||||
[[nodiscard]] bool CanBeGameMaster() const;
|
||||
void SetGameMaster(bool on);
|
||||
|
||||
@@ -108,6 +108,13 @@ void WorldSession::HandleGroupInviteOpcode(WorldPacket& recvData)
|
||||
return;
|
||||
}
|
||||
|
||||
// target has opted out of receiving group invites
|
||||
if (!invitedPlayer->IsAcceptGroupInvites())
|
||||
{
|
||||
SendPartyResult(PARTY_OP_INVITE, membername, ERR_BAD_PLAYER_NAME_S);
|
||||
return;
|
||||
}
|
||||
|
||||
// can't group with
|
||||
if (!invitingPlayer->IsGameMaster() && !sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP) && invitingPlayer->GetTeamId() != invitedPlayer->GetTeamId())
|
||||
{
|
||||
|
||||
@@ -1532,7 +1532,12 @@ enum AcoreStrings
|
||||
LANG_COMMAND_NPC_SHOWLOOT_MONEY = 35458,
|
||||
LANG_COMMAND_NPC_SHOWLOOT_ITEMS = 35459,
|
||||
LANG_COMMAND_NPC_SHOWLOOT_ENTRY = 35460,
|
||||
LANG_COMMAND_NPC_SHOWLOOT_QUEST = 35461
|
||||
LANG_COMMAND_NPC_SHOWLOOT_QUEST = 35461,
|
||||
|
||||
// Group invites toggle command
|
||||
LANG_COMMAND_GROUP_INVITES_ACCEPTING = 35462,
|
||||
LANG_COMMAND_GROUP_INVITES_ON = 35463,
|
||||
LANG_COMMAND_GROUP_INVITES_OFF = 35464
|
||||
|
||||
};
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user