feat(Core/Commands): add honor and arena point reset to .reset all … (#24978)

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Andrew
2026-03-03 12:21:37 -03:00
committed by GitHub
parent 4dce54c9a5
commit 82781f24a9
5 changed files with 43 additions and 1 deletions

View File

@@ -0,0 +1,8 @@
-- Add acore_string entries for reset all honor/arena messages
DELETE FROM `acore_string` WHERE `entry` IN (5118, 5119);
INSERT INTO `acore_string` (`entry`, `content_default`, `locale_koKR`, `locale_frFR`, `locale_deDE`, `locale_zhCN`, `locale_zhTW`, `locale_esES`, `locale_esMX`, `locale_ruRU`) VALUES
(5118, 'Honor points have been reset for all players.', NULL, NULL, 'Ehrenpunkte wurden für alle Spieler zurückgesetzt.', '所有玩家的荣誉点数已被重置。', NULL, 'Los puntos de honor se han restablecido para todos los jugadores.', 'Los puntos de honor se han restablecido para todos los jugadores.', NULL),
(5119, 'Arena points have been reset for all players.', NULL, NULL, 'Arenapunkte wurden für alle Spieler zurückgesetzt.', '所有玩家的竞技场点数已被重置。', NULL, 'Los puntos de arena se han restablecido para todos los jugadores.', 'Los puntos de arena se han restablecido para todos los jugadores.', NULL);
-- Update reset all command description to include honor and arena
UPDATE `command` SET `help` = 'Syntax: .reset all spells\r\n\r\nSyntax: .reset all talents\r\n\r\nSyntax: .reset all honor\r\n\r\nSyntax: .reset all arena\r\n\r\nRequests a reset of spells or talents (including talents for all of a character\'s pets, if any) at the next login for each existing character, or immediately resets honor points or arena points for all characters.' WHERE `name` = 'reset all';

View File

@@ -502,6 +502,8 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PrepareStatement(CHAR_UDP_CHAR_HONOR_POINTS_ACCUMULATIVE, "UPDATE characters SET totalHonorPoints = totalHonorPoints + ? WHERE guid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_UDP_CHAR_ARENA_POINTS, "UPDATE characters SET arenaPoints = ? WHERE guid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_UDP_CHAR_ARENA_POINTS_ACCUMULATIVE, "UPDATE characters SET arenaPoints = arenaPoints + ? WHERE guid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_UPD_ALL_HONOR_POINTS, "UPDATE characters SET totalHonorPoints = 0", CONNECTION_SYNCH);
PrepareStatement(CHAR_UPD_ALL_ARENA_POINTS, "UPDATE characters SET arenaPoints = 0", CONNECTION_SYNCH);
PrepareStatement(CHAR_UDP_CHAR_MONEY, "UPDATE characters SET money = ? WHERE guid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_UDP_CHAR_MONEY_ACCUMULATIVE, "UPDATE characters SET money = money + ? WHERE guid = ?", CONNECTION_ASYNC);
PrepareStatement(CHAR_UPD_CHAR_REMOVE_GHOST, "UPDATE characters SET playerFlags = (playerFlags & (~16)) WHERE guid = ?", CONNECTION_ASYNC);

View File

@@ -426,6 +426,8 @@ enum CharacterDatabaseStatements : uint32
CHAR_UDP_CHAR_HONOR_POINTS_ACCUMULATIVE,
CHAR_UDP_CHAR_ARENA_POINTS,
CHAR_UDP_CHAR_ARENA_POINTS_ACCUMULATIVE,
CHAR_UPD_ALL_HONOR_POINTS,
CHAR_UPD_ALL_ARENA_POINTS,
CHAR_UDP_CHAR_MONEY,
CHAR_UDP_CHAR_MONEY_ACCUMULATIVE,
CHAR_UPD_CHAR_REMOVE_GHOST, // pussywizard

View File

@@ -1192,7 +1192,9 @@ enum AcoreStrings
LANG_BF_ENABLED = 5116,
LANG_BF_DISABLED = 5117,
// Room for more strings 5118-9999
LANG_RESETALL_HONOR = 5118,
LANG_RESETALL_ARENA = 5119,
// Room for more strings 5120-9999
// Level requirement notifications
LANG_SAY_REQ = 6604,

View File

@@ -286,6 +286,34 @@ public:
if (!handler->GetSession())
handler->SendSysMessage(LANG_RESETALL_TALENTS);
}
else if (caseName == "honor")
{
CharacterDatabase.Execute(CharacterDatabase.GetPreparedStatement(CHAR_UPD_ALL_HONOR_POINTS));
sWorldSessionMgr->DoForAllOnlinePlayers([](Player* player)
{
player->SetHonorPoints(0);
});
handler->SendWorldText(LANG_RESETALL_HONOR);
if (!handler->GetSession())
handler->SendSysMessage(LANG_RESETALL_HONOR);
return true;
}
else if (caseName == "arena")
{
CharacterDatabase.Execute(CharacterDatabase.GetPreparedStatement(CHAR_UPD_ALL_ARENA_POINTS));
sWorldSessionMgr->DoForAllOnlinePlayers([](Player* player)
{
player->SetArenaPoints(0);
});
handler->SendWorldText(LANG_RESETALL_ARENA);
if (!handler->GetSession())
handler->SendSysMessage(LANG_RESETALL_ARENA);
return true;
}
else
{
handler->SendErrorMessage(LANG_RESETALL_UNKNOWN_CASE, caseName);