diff --git a/src/gs-entbase/shared/NSMonster.h b/src/gs-entbase/shared/NSMonster.h index ecca13be..15d48c30 100644 --- a/src/gs-entbase/shared/NSMonster.h +++ b/src/gs-entbase/shared/NSMonster.h @@ -289,4 +289,5 @@ string Sentences_GetSamples(string); string Sentences_ProcessSample(string); #else void NSMonster_AlertEnemyAlliance(vector pos, float radius, int alliance); -#endif \ No newline at end of file +entity NSMonster_FindClosestPlayer(entity); +#endif diff --git a/src/gs-entbase/shared/NSMonster.qc b/src/gs-entbase/shared/NSMonster.qc index d9535722..a03227fc 100644 --- a/src/gs-entbase/shared/NSMonster.qc +++ b/src/gs-entbase/shared/NSMonster.qc @@ -182,7 +182,7 @@ NSMonster::SeeThink(void) /* a horse type monster always knows where the nearest player is */ if (m_iFlags & MSF_HORDE) { - m_eEnemy = Entity_FindClosest(this, "player"); + m_eEnemy = NSMonster_FindClosestPlayer(this); if (m_eEnemy) NewRoute(m_eEnemy.origin); @@ -1121,4 +1121,27 @@ NSMonster_AlertEnemyAlliance(vector pos, float radius, int alliance) g_monsteralert_timer = time + 0.5f; } + +entity NSMonster_FindClosestPlayer(entity target) { + entity best = world; + float bestdist; + float dist; + + bestdist = 9999999; + + for (entity e = world; (e = find(e, classname, "player"));) { + /* hack: don't ever return dead players. they're invisible. */ + if (e.health <= 0) + continue; + + dist = vlen(target.origin - e.origin); + + if (dist < bestdist) { + bestdist = dist; + best = e; + } + } + + return best; +} #endif diff --git a/src/shared/entities.h b/src/shared/entities.h index c682d3aa..64cba686 100644 --- a/src/shared/entities.h +++ b/src/shared/entities.h @@ -62,10 +62,6 @@ entity Entity_FindClosest(entity target, string cname) { bestdist = 9999999; for (entity e = world; (e = find(e, classname, cname));) { - /* hack: don't ever return dead players. they're invisible. */ - if (cname == "player" && e.health <= 0) - continue; - dist = vlen(target.origin - e.origin); if (dist < bestdist) {