PDA

Просмотр полной версии : To remove from threat at height 15 yards


Den
23.04.2012, 19:47
Если над заагренным мобом подняться на высоту примерно в 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);
}

rsa
23.04.2012, 21:00
не на 15 а на расстояние доступности. в разных местах оно разное.

Den
24.04.2012, 11:17
Проверил получше, для мобов милишников агро сбрасывается, если подняться чуть больше на высоту 5.0 , тоесть расстояние мили атаки. А вот если заагрить моба-кастера, то тот будет кастовать магией на доступное расстояние этой магии, а если у него заканчивается магия то он стоит и ждет пока не отрегенится нужное количество манны, что бы скастовать заклинание.

rsa
24.04.2012, 12:40
ну вот мы и добрались на разделение типов AI на кастеров и милишников и расчета радиусов доступности... я это реализовал пока только в экспериментальной версии PetAI - альфа тестится второй месяц. мангостиму лучше мозги такими вещами не парить, у них даже style fix пока получаются криво :(