feat(Scripts/Commands): Add group revive command (#22204)

This commit is contained in:
Brian
2025-05-30 19:33:32 +02:00
committed by GitHub
parent 34698e0f62
commit 30f5dacd69
2 changed files with 38 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
--
DELETE FROM `command` WHERE `name` = 'group revive';
INSERT INTO `command` (`name`, `security`, `help`) VALUES
('group revive', 2, 'Syntax: .group revive\r\n\r\nRevives all players in your group.');

View File

@@ -36,6 +36,7 @@ public:
{ "join", HandleGroupJoinCommand, SEC_GAMEMASTER, Console::No },
{ "remove", HandleGroupRemoveCommand, SEC_GAMEMASTER, Console::No },
{ "disband", HandleGroupDisbandCommand, SEC_GAMEMASTER, Console::No },
{ "revive", HandleGroupReviveCommand, SEC_GAMEMASTER, Console::No },
{ "leader", HandleGroupLeaderCommand, SEC_GAMEMASTER, Console::No }
};
@@ -257,6 +258,39 @@ public:
return true;
}
static bool HandleGroupReviveCommand(ChatHandler* handler, Optional<PlayerIdentifier> target)
{
if (!target)
target = PlayerIdentifier::FromTargetOrSelf(handler);
if (!target)
return false;
Player* targetPlayer = target->GetConnectedPlayer();
Group* group = targetPlayer->GetGroup();
std::string nameLink = handler->playerLink(target->GetName());
if (!group)
{
handler->SendErrorMessage(LANG_NOT_IN_GROUP, nameLink);
return false;
}
for (GroupReference* it = group->GetFirstMember(); it != nullptr; it = it->next())
{
Player* target = it->GetSource();
if (target)
{
target->RemoveAurasDueToSpell(27827); // Spirit of Redemption
target->ResurrectPlayer(!AccountMgr::IsPlayerAccount(target->GetSession()->GetSecurity()) ? 1.0f : 0.5f);
target->SpawnCorpseBones();
target->SaveToDB(false, false);
}
}
return true;
}
};
void AddSC_group_commandscript()