feat(Scripts/Commands): .aura stack - Modify aura stacks (#19462)

* feat(Scripts/Commands): .aurastack - Modify aura stacks

* aura stack

* remove aur check

* {}

Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>

---------

Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>
This commit is contained in:
avarishd
2024-07-27 02:00:37 +03:00
committed by GitHub
parent dc3dfd3ab0
commit 6e0853dd76
3 changed files with 68 additions and 3 deletions

View File

@@ -0,0 +1,9 @@
--
DELETE FROM `command` WHERE `name`='aura stack';
INSERT INTO `command` VALUES ('aura stack', 2, 'Syntax: .aurastack #spellid #stacks\r\n\r\nModify #stacks of an already applied #spellid to the selected Unit.');
DELETE FROM `acore_string` WHERE `entry` IN (373,374,375);
INSERT INTO `acore_string` (`entry`, `content_default`) VALUES
(373, 'Target unit does not have aura {}!'),
(374, 'No stack amount specified!'),
(375, 'Spell {} cannot have stacks!');

View File

@@ -415,7 +415,12 @@ enum AcoreStrings
LANG_COMMAND_RESET_ITEMS_ALL_BAGS = 372,
// [END] reset items command strings
// Room for more level 2 373-399 not used
// .aura stack
LANG_COMMAND_AURASTACK_NO_AURA = 373,
LANG_COMMAND_AURASTACK_NO_STACK = 374,
LANG_COMMAND_AURASTACK_CANT_STACK = 375,
// Room for more level 2 376-399 not used
// level 3 chat
LANG_SCRIPTS_RELOADED = 400,

View File

@@ -87,12 +87,18 @@ public:
ChatCommandTable GetCommands() const override
{
static ChatCommandTable auraCommandTable =
{
{ "stack", HandleAuraStacksCommand, SEC_GAMEMASTER, Console::No },
{ "", HandleAuraCommand, SEC_GAMEMASTER, Console::No }
};
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 },
{ "aura", auraCommandTable },
{ "unaura", HandleUnAuraCommand, SEC_GAMEMASTER, Console::No },
{ "appear", HandleAppearCommand, SEC_MODERATOR, Console::No },
{ "summon", HandleSummonCommand, SEC_GAMEMASTER, Console::No },
@@ -129,7 +135,7 @@ public:
{ "cometome", HandleComeToMeCommand, SEC_ADMINISTRATOR, Console::No },
{ "damage", HandleDamageCommand, SEC_GAMEMASTER, Console::No },
{ "combatstop", HandleCombatStopCommand, SEC_GAMEMASTER, Console::Yes },
{ "flusharenapoints", HandleFlushArenaPointsCommand, SEC_ADMINISTRATOR, Console::Yes },
{ "flusharenapoints", HandleFlushArenaPointsCommand, SEC_ADMINISTRATOR, Console::Yes },
{ "freeze", HandleFreezeCommand, SEC_GAMEMASTER, Console::No },
{ "unfreeze", HandleUnFreezeCommand, SEC_GAMEMASTER, Console::No },
{ "possess", HandlePossessCommand, SEC_GAMEMASTER, Console::No },
@@ -653,6 +659,51 @@ public:
return true;
}
static bool HandleAuraStacksCommand(ChatHandler* handler, SpellInfo const* spell, int16 stacks)
{
if (!spell)
{
handler->SendErrorMessage(LANG_COMMAND_NOSPELLFOUND);
return false;
}
if (!SpellMgr::IsSpellValid(spell))
{
handler->SendErrorMessage(LANG_COMMAND_SPELL_BROKEN, spell->Id);
return false;
}
if (!stacks)
{
handler->SendErrorMessage(LANG_COMMAND_AURASTACK_NO_STACK);
return false;
}
Unit* target = handler->getSelectedUnit();
if (!target)
{
handler->SendErrorMessage(LANG_SELECT_CHAR_OR_CREATURE);
return false;
}
Aura* aur = target->GetAura(spell->Id);
if (!aur)
{
handler->SendErrorMessage(LANG_COMMAND_AURASTACK_NO_AURA, spell->Id);
return false;
}
if (!spell->StackAmount)
{
handler->SendErrorMessage(LANG_COMMAND_AURASTACK_CANT_STACK, spell->Id);
return false;
}
aur->ModStackAmount(stacks);
return true;
}
static bool HandleUnAuraCommand(ChatHandler* handler, Variant<SpellInfo const*, std::string_view> spells)
{
Unit* target = handler->getSelectedUnit();