Показать сообщение отдельно
Старый 23.04.2012, 19:47   #1
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию To remove from threat at height 15 yards

Если над заагренным мобом подняться на высоту примерно в 15 ярдов, то агро должно сбрасыватся.

Код:
diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp
index 8384823..0cc0ee7 100644
--- a/src/game/Creature.cpp
+++ b/src/game/Creature.cpp
@@ -1886,11 +1886,15 @@ bool Creature::IsOutOfThreatArea(Unit* pVictim) const
     if(sMapStore.LookupEntry(GetMapId())->IsDungeon())
         return false;
 
+    float heightOverCreature = pVictim->GetTerrain()->GetHeight(pVictim->GetPositionX(), pVictim->GetPositionY(), pVictim->GetPositionZ());
+    if (pVictim->GetPositionZ() > heightOverCreature + 15.0f)
+        return true;
+
     float AttackDist = GetAttackDistance(pVictim);
     float ThreatRadius = sWorld.getConfig(CONFIG_FLOAT_THREAT_RADIUS);
 
     //Use AttackDistance in distance check if threat radius is lower. This prevents creature bounce in and out of combat every update tick.
-    return !pVictim->IsWithinDist3d(m_combatStartX, m_combatStartY, m_combatStartZ,
+    return !pVictim->IsWithinDist2d(m_combatStartX, m_combatStartY,
         ThreatRadius > AttackDist ? ThreatRadius : AttackDist);
 }
Den вне форума   Ответить с цитированием