From a7d7dcd9ee89e97b9a1fae339bf91c8385aa34b6 Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Wed, 8 Jun 2022 17:41:02 -0700 Subject: [PATCH] Change the last commit by turning this into an NSMonster specific function instead. --- src/gs-entbase/shared/NSMonster.h | 3 ++- src/gs-entbase/shared/NSMonster.qc | 25 ++++++++++++++++++++++++- src/shared/entities.h | 4 ---- 3 files changed, 26 insertions(+), 6 deletions(-) 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) {