Точнее патч на ауру SPELL_AURA_MOD_POSSESS, т.к. она используется не только в спелле Mind Control.
Баги, которые исправляет патч:
1. Если до контроля моб воспроизводил какую-то эмоцию, после законтролливания он продолжает ее воспроизводить.
2. После спадания майнд контроля моб не атакует контролера.
3. После спадания майнд контроля, если законтроленный моб атаковал другого моба, этот другой моб продолжает атаковать того, который был в майнд контроле.
Код:
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 3957462..9ee6d79 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -3632,6 +3632,8 @@ void Aura::HandleModPossess(bool apply, bool Real)
((Player*)m_target)->SetClientControl(m_target, 0);
}
+ m_target->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
+
if(CharmInfo *charmInfo = m_target->InitCharmInfo(m_target))
charmInfo->InitPossessCreateSpells();
@@ -3665,10 +3667,17 @@ void Aura::HandleModPossess(bool apply, bool Real)
if(m_target->GetTypeId() == TYPEID_UNIT)
{
+ m_target->CombatStop();
+ m_target->getHostileRefManager().clearReferences();
+ m_target->getThreatManager().clearReferences();
+
((Creature*)m_target)->AIM_Initialize();
if (((Creature*)m_target)->AI())
+ {
((Creature*)m_target)->AI()->AttackedBy(caster);
+ ((Creature*)m_target)->AI()->AttackStart(caster);
+ }
}
}
}