Скрипт "Антивулч" для Репок

Можно пока потестить на существующих картах.

Код:
using System.Collections.Generic;
using maddox.game;
using maddox.game.world;
using maddox.GP;

public class Mission : AMission
    {
        List<AvZone> av_points = new List<AvZone>();

        public override void OnBattleStarted()
        {
            base.OnBattleStarted();
            av_points.Add(new AvZone(52615, 52732, 9, 900,  500)); // добавляем зону антивулча (координаты по трем осям, радиус, ограничение по высоте)
        }

        public override void OnAircraftDamaged(int missionNumber, string shortName, AiAircraft aircraft, AiDamageInitiator initiator, part.NamedDamageTypes damageType)
        {
            base.OnAircraftDamaged(missionNumber, shortName, aircraft, initiator, damageType);
            if (initiator.Actor is AiAircraft && initiator.Tool.Type == AiDamageToolType.Cannon) // если атакующий - самолет и стрелял пушками/пулеметами
            {
                AiAircraft attacker = (AiAircraft)initiator.Actor;
                if (InAvZone(aircraft)) // проверяем, находится ли жертва в пределах антивулча
                {
                    attacker.cutLimb(part.LimbNames.WingL0); // цинично ломаем редиске левое крыло...
                    attacker.cutLimb(part.LimbNames.WingR0); // и не менее цинично, правое.
                }
            }
        }

        public bool InAvZone(AiAircraft attacker)
        {
            foreach (AvZone zone in av_points)
            {
                Point3d point = attacker.Pos();
                if (zone.Has(point))
                {
                    return true;
                }
            }
            return false;
        }
    }

    public struct AvZone
    {
        Point3d point;
        double radius;
        double zMax;

        public AvZone(double x, double y, double z, double radius, double zMax)
        {
            point = new Point3d(x, y, z);
            this.radius = radius;
            this.zMax = zMax;
        }

        public bool Has(Point3d pos)
        {
            if (pos.z - point.z > zMax) return false;
            if (pos.distance(ref point) > radius)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
    }
Звено стодесятых на проверке эпично шмякнулось об землю при попытке атаковать взлетающие самолеты.