From 32be81601f55aad8626609c5e513cf4108ad77bd Mon Sep 17 00:00:00 2001 From: Mario Date: Fri, 26 Apr 2013 21:08:41 +1000 Subject: [PATCH] Improve mage friend health/ammo check a bit --- qcsrc/server/monsters/lib/monsters.qc | 3 +++ qcsrc/server/monsters/monster/shalrath.qc | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/qcsrc/server/monsters/lib/monsters.qc b/qcsrc/server/monsters/lib/monsters.qc index 56b37e317..860fe39f2 100644 --- a/qcsrc/server/monsters/lib/monsters.qc +++ b/qcsrc/server/monsters/lib/monsters.qc @@ -105,6 +105,9 @@ float monster_isvalidtarget (entity targ, entity ent) if(targ.items & IT_INVISIBILITY) return FALSE; // enemy is invisible + + if(substring(targ.classname, 0, 10) == "onslaught_") + return FALSE; // don't attack onslaught targets if(IS_SPEC(targ) || IS_OBSERVER(targ)) return FALSE; // enemy is a spectator diff --git a/qcsrc/server/monsters/monster/shalrath.qc b/qcsrc/server/monsters/monster/shalrath.qc index e6191c888..3c57e0f0a 100644 --- a/qcsrc/server/monsters/monster/shalrath.qc +++ b/qcsrc/server/monsters/monster/shalrath.qc @@ -47,20 +47,21 @@ void() shalrath_shield_die; void shalrath_think() { entity head; - float friend_needshelp = FALSE; + float friend_needshelp = FALSE, need_hpammo = FALSE; FOR_EACH_PLAYER(head) { + need_hpammo = ((g_minstagib) ? head.ammo_cells < start_ammo_cells : head.health < autocvar_g_balance_health_regenstable); if not(IsDifferentTeam(head, self)) if(head.health > 0) if(vlen(head.origin - self.origin) < autocvar_g_monster_shalrath_heal_range) - if((!g_minstagib && head.health < start_health) || (g_minstagib && head.ammo_cells < start_ammo_cells)) + if(need_hpammo) { friend_needshelp = TRUE; break; // found 1 player near us who is low on health } } - FOR_EACH_MONSTER(head) + FOR_EACH_MONSTER(head) if(head != self) { if not(IsDifferentTeam(head, self)) if(head.health > 0) -- 2.39.2