Показать сообщение отдельно
Старый 31.03.2010, 16:18   #1
PSZ
Ученый
 
Регистрация: 07.03.2010
Сообщений: 138
Сказал(а) спасибо: 200
Поблагодарили 143 раз(а) в 49 сообщениях
PSZ Обладатель прекрасной аурыPSZ Обладатель прекрасной ауры
По умолчанию [patch] Mind Control

Точнее патч на ауру 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);
+            }
         }
     }
 }
PSZ вне форума   Ответить с цитированием
7 пользователя(ей) сказали cпасибо:
ANTOMA (03.04.2010), fedr (08.04.2010), labor (09.04.2010), lucky (31.03.2010), SilverIce (05.04.2010), tempura (28.05.2010)