break;
}
- RadiusDamage(self, self.realowner, damg, edamg, 0, world, rad, DEATH_MONSTER_SPIDER_FIRE, world); // ice deals no damage anyway
+ RadiusDamage(self, self.realowner, damg, edamg, rad, world, rad, DEATH_MONSTER_SPIDER_FIRE, world); // ice deals no damage anyway
for(e = findradius(self.origin, rad); e; e = e.chain) if(e != self) if(e.takedamage && e.deadflag == DEAD_NO) if(e.health > 0)
{
break;
}
- vector fmins = '-4 -4 -4', fmaxs = '4 4 4';
-
monster_makevectors(self.enemy);
sound(self, CH_SHOTS, snd, VOL_BASE, ATTEN_NORM);
proj.movetype = MOVETYPE_BOUNCE;
W_SetupProjectileVelocityEx(proj, v_forward, v_up, MON_CVAR(spider, attack_web_speed), MON_CVAR(spider, attack_web_speed_up), 0, 0, FALSE);
proj.touch = spider_web_touch;
- setsize(proj, fmins, fmaxs);
+ setsize(proj, '-4 -4 -4', '4 4 4');
proj.takedamage = DAMAGE_NO;
proj.damageforcescale = 0;
proj.health = 500;
if(SAME_TEAM(targ, ent))
return FALSE; // enemy is on our team
+
+ if (targ.frozen == 1 || (targ.frozen == 2 && ent.monsterid != MON_SPIDER))
+ return FALSE; // ignore frozen
if(autocvar_g_monsters_target_infront || ent.spawnflags & MONSTERFLAG_INFRONT)
if(ent.enemy != targ)
{
vector v;
- v = CENTER_OR_VIEWOFS(e);
+ v = e.origin + (e.mins + e.maxs) * 0.5;
self.v_angle = vectoangles(v - (self.origin + self.view_ofs));
self.v_angle_x = -self.v_angle_x;
{
setorigin(self, self.pos1);
self.angles = self.pos2;
+
+ Unfreeze(self); // remove any icy remains
self.health = self.max_health;
self.velocity = '0 0 0';
self.think = monster_dead_think;
self.nextthink = self.ticrate;
self.ltime = time + 5;
+
+ Unfreeze(self); // remove any icy remains
+ self.health = 0; // reset by Unfreeze
monster_dropitem();
{
self.think = monster_think;
self.nextthink = self.ticrate;
+
+ if(self.ltime)
+ if(time >= self.ltime)
+ {
+ Damage(self, self, self, self.health + self.max_health, DEATH_KILL, self.origin, self.origin);
+ return;
+ }
MON_ACTION(self.monsterid, MR_THINK);
}