feat(Core/Player): Implement commentator tag (#17449)

* feat(Core/Player): Implement commentator tag

* remove redundant session check
This commit is contained in:
Kitzunu
2023-10-08 09:07:17 +02:00
committed by GitHub
parent 5357a31a01
commit a4e4d6ddb2
4 changed files with 69 additions and 19 deletions

View File

@@ -88,6 +88,7 @@ public:
{
static ChatCommandTable commandTable =
{
{ "commentator", HandleCommentatorCommand, SEC_MODERATOR, Console::No },
{ "dev", HandleDevCommand, SEC_ADMINISTRATOR, Console::No },
{ "gps", HandleGPSCommand, SEC_MODERATOR, Console::No },
{ "aura", HandleAuraCommand, SEC_GAMEMASTER, Console::No },
@@ -451,6 +452,51 @@ public:
return true;
}
static bool HandleCommentatorCommand(ChatHandler* handler, Optional<bool> enableArg)
{
WorldSession* session = handler->GetSession();
if (!session)
{
return false;
}
auto SetCommentatorMod = [&](bool enable)
{
session->SendNotification(enable ? "Commentator mode on" : "Commentator mode off");
session->GetPlayer()->SetCommentator(enable);
};
if (!enableArg)
{
if (!AccountMgr::IsPlayerAccount(session->GetSecurity()) && session->GetPlayer()->IsCommentator())
{
SetCommentatorMod(true);
}
else
{
SetCommentatorMod(false);
}
return true;
}
if (*enableArg)
{
SetCommentatorMod(true);
return true;
}
else
{
SetCommentatorMod(false);
return true;
}
handler->SendSysMessage(LANG_USE_BOL);
handler->SetSentErrorMessage(true);
return false;
}
static bool HandleDevCommand(ChatHandler* handler, Optional<bool> enableArg)
{
WorldSession* session = handler->GetSession();
@@ -467,32 +513,29 @@ public:
sScriptMgr->OnHandleDevCommand(handler->GetSession()->GetPlayer(), enable);
};
if (WorldSession* session = handler->GetSession())
if (!enableArg)
{
if (!enableArg)
{
if (!AccountMgr::IsPlayerAccount(session->GetSecurity()) && session->GetPlayer()->IsDeveloper())
{
SetDevMod(true);
}
else
{
SetDevMod(false);
}
return true;
}
if (*enableArg)
if (!AccountMgr::IsPlayerAccount(session->GetSecurity()) && session->GetPlayer()->IsDeveloper())
{
SetDevMod(true);
return true;
}
else
{
SetDevMod(false);
return true;
}
return true;
}
if (*enableArg)
{
SetDevMod(true);
return true;
}
else
{
SetDevMod(false);
return true;
}
handler->SendSysMessage(LANG_USE_BOL);