fix(Core): enable .freeze and .unfreeze gm cmd for NPCS (#8688)
This commit is contained in:
parent
bcd1a701ac
commit
e678b306e9
1 changed files with 26 additions and 7 deletions
|
|
@ -3049,7 +3049,9 @@ public:
|
|||
static bool HandleFreezeCommand(ChatHandler* handler, char const* args)
|
||||
{
|
||||
std::string name;
|
||||
Unit* target = handler->getSelectedUnit();
|
||||
Player* player;
|
||||
constexpr int Freeze = 9454;
|
||||
char const* TargetName = strtok((char*)args, " "); // get entered name
|
||||
if (!TargetName) // if no name entered use target
|
||||
{
|
||||
|
|
@ -3067,12 +3069,6 @@ public:
|
|||
player = ObjectAccessor::FindPlayerByName(name);
|
||||
}
|
||||
|
||||
if (!player)
|
||||
{
|
||||
handler->SendSysMessage(LANG_COMMAND_FREEZE_WRONG);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (player == handler->GetSession()->GetPlayer())
|
||||
{
|
||||
handler->SendSysMessage(LANG_COMMAND_FREEZE_ERROR);
|
||||
|
|
@ -3082,19 +3078,42 @@ public:
|
|||
if (player && (player != handler->GetSession()->GetPlayer()))
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
static bool HandleUnFreezeCommand(ChatHandler* handler, char const* args)
|
||||
{
|
||||
std::string name;
|
||||
Unit* target = handler->getSelectedUnit();
|
||||
Player* player;
|
||||
constexpr int Freeze = 9454;
|
||||
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)
|
||||
{
|
||||
name = targetName;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue