home *** CD-ROM | disk | FTP | other *** search
- void(entity inflictor, entity attacker, float damage, entity ignore, float radius) T_NewRadiusDamage =
- {
- local float points;
- local entity head;
- local vector org;
-
- head = findradius(inflictor.origin, radius);
-
- while (head)
- {
- if (head != ignore)
- {
- if (head.takedamage)
- {
- org = head.origin + (head.mins + head.maxs)*0.5;
- points = 0.5*vlen (inflictor.origin - org);
- if (points < 0)
- points = 0;
- points = damage - points;
- if (points > 0)
- {
- if (CanDamage (head, inflictor))
- { // shambler takes half damage from all explosions
- if (head.classname == "monster_shambler")
- T_Damage (head, inflictor, attacker, points*0.5);
- else
- T_Damage (head, inflictor, attacker, points);
- }
- }
- }
- }
- head = head.chain;
- }
- };
-