void M_Item_Touch ()
{
- if(self && other.classname == STR_PLAYER && other.deadflag == DEAD_NO)
+ if(self && IS_PLAYER(other) && other.deadflag == DEAD_NO)
{
Item_Touch();
self.think = SUB_Remove;
self = oldself;
}
-float monster_isvalidtarget (entity targ, entity ent, float neutral)
+float monster_isvalidtarget (entity targ, entity ent)
{
if(!targ || !ent)
return FALSE; // this check should fix a crash
if(trace_ent != targ)
return FALSE; // we can't see the enemy
- if(neutral == TRUE)
- return TRUE; // we come in peace!
-
if(targ.takedamage == DAMAGE_NO)
return FALSE; // enemy can't be damaged
if(targ.items & IT_INVISIBILITY)
return FALSE; // enemy is invisible
- if(targ.classname == STR_SPECTATOR || targ.classname == STR_OBSERVER)
+ if(IS_SPEC(targ) || IS_OBSERVER(targ))
return FALSE; // enemy is a spectator
if(targ.deadflag != DEAD_NO || ent.deadflag != DEAD_NO || targ.health <= 0 || ent.health <= 0)
local entity e;
for(e = world; (e = findflags(e, monster_attack, TRUE)); )
{
- if(monster_isvalidtarget(e, ent, FALSE))
+ if(monster_isvalidtarget(e, ent))
{
return e;
}
if(self.enemy != other)
if not(other.flags & FL_MONSTER)
- if(monster_isvalidtarget(other, self, FALSE))
+ if(monster_isvalidtarget(other, self))
self.enemy = other;
}
if (time < self.attack_finished_single)
return FALSE;
-
- if (enemy_range() > 2000) // long traces are slow
- return FALSE;
if(self.attack_melee)
- if(enemy_range() <= 100 * self.scale)
+ if(vlen(self.enemy.origin - self.origin) <= 100 * self.scale)
{
monster_sound(self.msound_attack_melee, 0, FALSE); // no delay for attack sounds
self.attack_melee(); // don't wait for nextthink - too slow
if (self.health <= 0)
return;
- if(!monster_isvalidtarget(activator, self, -1))
+ if(!monster_isvalidtarget(activator, self))
return;
self.enemy = activator;
return;
if((ignore_turrets && !(attacker.turrcaps_flags & TFL_TURRCAPS_ISTURRET)) || !ignore_turrets)
- if(monster_isvalidtarget(attacker, self, FALSE))
+ if(monster_isvalidtarget(attacker, self))
self.enemy = attacker;
self.health -= damage;
if(self.realowner.classname == "monster_spawner")
self.realowner.spawner_monstercount -= 1;
- if(self.realowner.flags & FL_CLIENT)
+ if(IS_CLIENT(self.realowner))
self.realowner.monstercount -= 1;
totalspawned -= 1;
if(self.netname == "")
{
- if(net_name != "" && self.realowner.classname == STR_PLAYER)
+ if(net_name != "" && IS_PLAYER(self.realowner))
net_name = strzone(strdecolorize(sprintf("%s's %s", self.realowner.netname, net_name)));
self.netname = ((net_name == "") ? self.classname : net_name);
}