fix(Core): enable .freeze and .unfreeze gm cmd for NPCS (#8688)
This commit is contained in:
@@ -3049,7 +3049,9 @@ public:
|
|||||||
static bool HandleFreezeCommand(ChatHandler* handler, char const* args)
|
static bool HandleFreezeCommand(ChatHandler* handler, char const* args)
|
||||||
{
|
{
|
||||||
std::string name;
|
std::string name;
|
||||||
|
Unit* target = handler->getSelectedUnit();
|
||||||
Player* player;
|
Player* player;
|
||||||
|
constexpr int Freeze = 9454;
|
||||||
char const* TargetName = strtok((char*)args, " "); // get entered name
|
char const* TargetName = strtok((char*)args, " "); // get entered name
|
||||||
if (!TargetName) // if no name entered use target
|
if (!TargetName) // if no name entered use target
|
||||||
{
|
{
|
||||||
@@ -3067,12 +3069,6 @@ public:
|
|||||||
player = ObjectAccessor::FindPlayerByName(name);
|
player = ObjectAccessor::FindPlayerByName(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!player)
|
|
||||||
{
|
|
||||||
handler->SendSysMessage(LANG_COMMAND_FREEZE_WRONG);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player == handler->GetSession()->GetPlayer())
|
if (player == handler->GetSession()->GetPlayer())
|
||||||
{
|
{
|
||||||
handler->SendSysMessage(LANG_COMMAND_FREEZE_ERROR);
|
handler->SendSysMessage(LANG_COMMAND_FREEZE_ERROR);
|
||||||
@@ -3082,19 +3078,42 @@ public:
|
|||||||
if (player && (player != handler->GetSession()->GetPlayer()))
|
if (player && (player != handler->GetSession()->GetPlayer()))
|
||||||
{
|
{
|
||||||
handler->PSendSysMessage(LANG_COMMAND_FREEZE, name.c_str());
|
handler->PSendSysMessage(LANG_COMMAND_FREEZE, name.c_str());
|
||||||
if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(9454))
|
if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(Freeze))
|
||||||
Aura::TryRefreshStackOrCreate(spellInfo, MAX_EFFECT_MASK, player, player);
|
Aura::TryRefreshStackOrCreate(spellInfo, MAX_EFFECT_MASK, player, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!target || !handler->GetSession()->GetPlayer()->GetTarget())
|
||||||
|
{
|
||||||
|
handler->SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE);
|
||||||
|
handler->SetSentErrorMessage(true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (target->IsAlive())
|
||||||
|
{
|
||||||
|
handler->PSendSysMessage(LANG_COMMAND_FREEZE, name.c_str());
|
||||||
|
if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(Freeze))
|
||||||
|
Aura::TryRefreshStackOrCreate(spellInfo, MAX_EFFECT_MASK, target, target);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool HandleUnFreezeCommand(ChatHandler* handler, char const* args)
|
static bool HandleUnFreezeCommand(ChatHandler* handler, char const* args)
|
||||||
{
|
{
|
||||||
std::string name;
|
std::string name;
|
||||||
|
Unit* target = handler->getSelectedUnit();
|
||||||
Player* player;
|
Player* player;
|
||||||
|
constexpr int Freeze = 9454;
|
||||||
char* targetName = strtok((char*)args, " "); // Get entered name
|
char* targetName = strtok((char*)args, " "); // Get entered name
|
||||||
|
|
||||||
|
if (target->HasAura(Freeze))
|
||||||
|
{
|
||||||
|
handler->PSendSysMessage(LANG_COMMAND_UNFREEZE, name.c_str());
|
||||||
|
target->RemoveAurasDueToSpell(Freeze);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (targetName)
|
if (targetName)
|
||||||
{
|
{
|
||||||
name = targetName;
|
name = targetName;
|
||||||
|
|||||||
Reference in New Issue
Block a user