// avoiding dangers and obstacles
vector dst_ahead, dst_down;
makevectors(self.v_angle_y * '0 1 0');
- dst_ahead = self.origin + self.view_ofs + (self.velocity * 0.4) + (v_forward * 32 * 3);
- dst_down = dst_ahead + '0 0 -1500';
+ dst_ahead = normalize(self.origin + self.view_ofs + (self.velocity * 0.4) + (v_forward * 32 * 3));
+ dst_down = dst_ahead - '0 0 1500';
// Look ahead
- traceline(self.origin + self.view_ofs , dst_ahead, TRUE, world);
+ traceline(self.origin + self.view_ofs, dst_ahead, TRUE, world);
// Check head-banging against walls
if(vlen(self.origin + self.view_ofs - trace_endpos) < 25 && !(self.aistatus & AI_STATUS_OUT_WATER))
mintime = e.fire_endtime - time;
maxtime = max(mintime, t);
- mindps = e.fire_damagepersec;
+ mindps = max(0.1, e.fire_damagepersec);
maxdps = max(mindps, dps);
if(maxtime > mintime || maxdps > mindps)
e.fire_hitsound = TRUE;
if (!IS_INDEPENDENT_PLAYER(e))
+ if(!e.freezetag_frozen)
FOR_EACH_PLAYER(other) if(e != other)
{
if(IS_PLAYER(other))