Пример #1
0
        public Interceptor(long _uniqueId, Vector3 _position, Quaternion _rotation, Team _team, SpawnShip _home)
            : base(_uniqueId, _position, _rotation, _team, _home)
        {
            maxZSpeed = 10000.0f;
            minZSpeed = 300.0f;
            normalZSpeed = 500.0f;
            ZSpeed = NormalZSpeed;

            MAX_HEALTH = 3;
            Health = MaxHealth;

            MAX_SHIELDS = 1;
            Shields = MaxShields;

            SHIELD_RECOVER_RATE = 0.2f;

            rollAccel = 10.0f;
            rollBreak = 5.0f;
            rollCap = 2.5f;

            pitchAccel = 7.5f;
            pitchBreak = 5.0f;
            pitchCap = 1.5f;

            yawAccel = 7.5f;
            yawBreak = 5.0f;
            yawCap = 1.5f;

            baseHeat = 0.55f;
            heat = 0;
            overheatHeat = 1.5f;
            heatingRate = 1.5f;
            coolingRate = 0.25f;
            heatDamageRate = 0.1f;
            heatWarningThreshold = 1.2f;
            heatDamageThreshold = 1.4f;

            accelerationRate = 25000.0f;

            FIRE_RATE = 0.1f;
            fireTimer = FireRate;

            SPECIAL_RATE = 0.5f;
            specialTimer = SpecialRate;

            PRIMARY_RANGE = 100000000f;

            CollisionBase = new CollisionSphere(_position, 10);
            CollisionBase.Parent = this;
            CollisionBase.addCollisionEvent(collisionEvent);

            if (ShipTeam == Team.Esxolus)
            {
                ((Sphere)CollisionBase.getPhysicsCollider()).CollisionInformation.CollisionRules.Group = EsxolusShipGroup;
            }
            else
            {
                ((Sphere)CollisionBase.getPhysicsCollider()).CollisionInformation.CollisionRules.Group = HalkShipGroup;
            }
        }
        public EsxolusBomber(long _uniqueId, Vector3 _position, Quaternion _rotation, SpawnShip _home)
            : base(_uniqueId, _position, _rotation, Team.Esxolus, _home)
        {
            laserOffsets = new Vector3[] {
                new Vector3(-2.429f, -9.134f, 67.641f),
                new Vector3(2.429f, -9.134f, 67.641f)
            };
            MAX_SECONDARY_AMMO = 15;
            SecondaryAmmo = MaxSecondaryAmmo;
            SECONDARY_RANGE = 8000000f;

            leftSecondary = true;

            secondaryAttackPositions = new Vector3[] {
                new Vector3(12.325f, -2.762f, 4.149f),
                new Vector3(-12.325f, -2.762f, 4.149f),
            };
            secondaryAttackForward = new Quaternion[] {
                Quaternion.CreateFromAxisAngle(Vector3.Forward, 0f)
            };

            trailGenerators.Add(new EEngineTrailGenerator(this, new Vector3(3.919f, 0.0f, -14.581f)));
            trailGenerators.Add(new EEngineTrailGenerator(this, new Vector3(-3.919f, 0.0f, -14.581f)));

            setCloseModelByString("Models/Ships/esxolus_bomber_model");
            setFarModelByString("Models/Ships/esxolus_bomber_LP_model");
        }
        public HalkAssaultFighter(long _uniqueId, Vector3 _position, Quaternion _rotation, SpawnShip _home)
            : base(_uniqueId, _position, _rotation, Team.Halk, _home)
        {
            laserOffsets = new Vector3[] {
                new Vector3(-3.382f, -2.532f, 59.654f),
                new Vector3(3.382f, -2.532f, 59.654f)
            };
            SECONDARY_RANGE = 8000000f;
            MAX_SECONDARY_AMMO = 9;
            SecondaryAmmo = MaxSecondaryAmmo;
            secondaryAttackPositions = new Vector3[] {
                new Vector3(0, -4.275f, 11.3f),
            };
            secondaryAttackForward = new Quaternion[] {
                Quaternion.CreateFromAxisAngle(Vector3.Forward, 0f)
            };

            trailGenerators.Add(new HEngineTrailGenerator(this, new Vector3(-3.004f, 1.722f, -22.46f))); // -12.46f
            trailGenerators.Add(new HEngineTrailGenerator(this, new Vector3(-0.475f, 1.413f, -22.46f)));
            trailGenerators.Add(new HEngineTrailGenerator(this, new Vector3(-0.992f, 3.3987f, -22.46f)));
            trailGenerators.Add(new HEngineTrailGenerator(this, new Vector3(1.229f, 4.355f, -22.46f)));
            trailGenerators.Add(new HEngineTrailGenerator(this, new Vector3(2.429f, 2.204f, -22.46f)));

            setCloseModelByString("Models/Ships/Halk_Assault");
            setFarModelByString("Models/Ships/Halk_Assault");
        }
        public EsxolusAssaultFighter(long _uniqueId, Vector3 _position, Quaternion _rotation, SpawnShip _home)
            : base(_uniqueId, _position, _rotation, Team.Esxolus, _home)
        {
            laserOffsets = new Vector3[] {
                new Vector3(-0.707f, 2.037f, 44.484f), //54.484f),
                new Vector3(0.707f, 2.037f, 44.484f), //54.484f),
                new Vector3(-2.307f, -1.674f, 30.986f), //40.986f),
                new Vector3(2.307f, -1.674f, 30.986f), //40.986f)
            };
            SECONDARY_RANGE = 6000000f;
            MAX_SECONDARY_AMMO = 9;
            SecondaryAmmo = MaxSecondaryAmmo;

            SPECIAL_RATE = 1.5f;

            firingSecondaries = false;

            randomUnitVectors = new Vector3[SECONDARY_LOCATION_COUNT];
            for (int i = 0; i < SECONDARY_LOCATION_COUNT; i++)
            {
                randomUnitVectors[i] = getRandomUnitVector();
            }

            #region Missle Positions
            secondaryAttackPositions = new Vector3[] {
                // Left Top
                new Vector3(4.706f, 1.16f, 36.627f),
                // Right Top
                new Vector3(-4.706f, 1.16f, 36.627f),

                // Left Mid
                new Vector3(4.706f, -0.175f, 36.113f),
                // Right Mid
                new Vector3(-4.706f, -0.175f, 36.113f),

                // Left Bottom
                new Vector3(4.706f, -1.493f, 35.432f),
                // Right Bottom
                new Vector3(-4.706f, -1.493f, 35.432f),
            };
            #endregion

            secondaryAttackForward = new Quaternion[] {
                Quaternion.CreateFromAxisAngle(Vector3.Forward, 0f)
            };
            /* Currently using HALK Angles; still waiting on the esxolus */
            secondaryAttackForward = new Quaternion[]{
                Quaternion.CreateFromAxisAngle(Vector3.Forward, 0f)
            };

            trailGenerators.Add(new EEngineTrailGenerator(this, new Vector3(4.702f, 0.0f, -11.063f)));
            trailGenerators.Add(new EEngineTrailGenerator(this, new Vector3(-4.702f, 0.0f, -11.063f)));

            setCloseModelByString("Models/Ships/esxolus_assault_fighter_model");
            setFarModelByString("Models/Ships/esxolus_assault_fighter_LP_model");
        }
 public static Bomber createNewBomber(Vector3 position, Quaternion rotation, Ship.Team _team, SpawnShip _home)
 {
     Bomber rFighter = null;
     switch (_team)
     {
         case Ship.Team.Esxolus:
             rFighter = new EsxolusBomber(seed += seedIncrement, position, rotation, _home);
             break;
         case Ship.Team.Halk:
             rFighter = new HalkBomber(seed += seedIncrement, position, rotation, _home);
             break;
     }
     return ((Bomber)rFighter);
 }
Пример #6
0
 public SpawnShip removeSpawnShip(SpawnShip ship)
 {
     using (new WriteLock(shipLock))
     {
         spawnShips.Remove(ship);
     }
     return ship;
 }
Пример #7
0
 public SpawnShip addSpawnShip(SpawnShip ship)
 {
     using (new WriteLock(shipLock))
     {
         spawnShips.Add(ship);
     }
     return ship;
 }
Пример #8
0
        public SpawnShipPiece(long _uniqueId, Vector3 _position, Quaternion _rotation, Team _team, 
            Model _part, Model _destroyed, Model _collisionMesh, float _health, List<Turret> _turrets, SpawnShip _parent)
            : base(_uniqueId, _position, _rotation, _team)
        {
            MAX_HEALTH = _health;
            Health = MaxHealth;
            destroyedModel = _destroyed;
            collisionMesh = _collisionMesh;
            // collisionMesh = ContentLoadManager.loadModel("Models/box");
            part = _part;
            Model = part;
            parent = _parent;
            turrets = _turrets;
            CollisionBase = new CollisionMesh(collisionMesh, Position, Rotation);
            CollisionBase.Active = true;
            CollisionBase.addCollisionEvent(collisionEvent);
            CollisionBase.Parent = this;

            if (team == Team.Esxolus)
            {
                ((MobileMesh)CollisionBase.getPhysicsCollider()).CollisionInformation.CollisionRules.Group = EsxolusMeshShipGroup;
            }
            else
            {
                ((MobileMesh)CollisionBase.getPhysicsCollider()).CollisionInformation.CollisionRules.Group = HalkMeshShipGroup;
            }

            pieceRotation = Rotation;
            piecePosition = Position;

            int hudScale = 2;
            pieceHUDUnit = new HUDUnit(this, 10 * hudScale, 4 * hudScale, 1 * hudScale);

            foreach (Turret turret in turrets)
            {
                turret.Parent = this;
            }
        }
Пример #9
0
        private float zSpeed = 20.0f; // The speed the ship is moving at

        #endregion Fields

        #region Constructors

        public Fighter(long _uniqueId, Vector3 _position, Quaternion _rotation, Team _team, SpawnShip _home)
            : base(_uniqueId, _position, _rotation, _team)
        {
            myAI = new AI(this);

            SHIELD_RECOVER_RATE /= 5;

            Damage = 0.5f;

            MAX_HEALTH = 5;
            Health = MaxHealth;

            MAX_SHIELDS = 5;
            Shields = MaxShields;

            PRIMARY_RANGE   = 1000000f;
            SECONDARY_RANGE = 800000f;

            INTEREST_TIME = 20;
            interestTimer = INTEREST_TIME;

            maxJitterPosition = new Vector3(0.5f, 0.5f, 0.5f);
            minJitterPosition = -maxJitterPosition;

            maxJitterRotation = Quaternion.Identity;
            minJitterRotation = maxJitterRotation;

            maxJitterPositionVelocity = new Vector3(0.5f, 0.5f, 0.5f);
            minJitterPositionVelocity = -maxJitterPositionVelocity;

            maxJitterRotationVelocity = Quaternion.Identity;
            minJitterRotationVelocity = maxJitterRotationVelocity;

            home = _home;

            random = new Random((int)_uniqueId);

            dustGenerator = new DustParticleGenerator(this);
            trailGenerators = new List<EngineTrailParticleGenerator>();
            Active = false;
        }
Пример #10
0
        public Bomber(long _uniqueId, Vector3 _position, Quaternion _rotation, Team _team, SpawnShip _home)
            : base(_uniqueId, _position, _rotation, _team, _home)
        {
            maxZSpeed = 7500.0f;
            minZSpeed = 150.0f;
            normalZSpeed = 350.0f;
            ZSpeed = NormalZSpeed;

            MAX_HEALTH = 7;
            Health = MaxHealth;

            MAX_SHIELDS = 3;
            Shields = MaxShields;

            SHIELD_RECOVER_RATE = 0.05f;

            rollAccel = 5.5f;
            rollBreak = 4.5f;
            rollCap = 1.5f;

            pitchAccel = 4.5f;
            pitchBreak = 3.5f;
            pitchCap = 0.75f;

            yawAccel = 4.5f;
            yawBreak = 3.5f;
            yawCap = 0.75f;

            baseHeat = 0.35f;
            heat = 0;
            overheatHeat = 1.5f;
            heatingRate = 0.5f;
            coolingRate = 0.1f;
            heatDamageRate = 0.75f;
            heatWarningThreshold = 1.2f;
            heatDamageThreshold = 1.4f;

            accelerationRate = 10000.0f;

            FIRE_RATE = 0.35f;
            fireTimer = FireRate;

            SPECIAL_RATE = 1.0f;
            specialTimer = SpecialRate;

            SecondaryAmmo = MaxSecondaryAmmo;

            CollisionBase = new CollisionSphere(_position, 10);
            CollisionBase.Parent = this;
            CollisionBase.addCollisionEvent(collisionEvent);

            if (ShipTeam == Team.Esxolus)
            {
                ((Sphere)CollisionBase.getPhysicsCollider()).CollisionInformation.CollisionRules.Group = EsxolusShipGroup;
            }
            else
            {
                ((Sphere)CollisionBase.getPhysicsCollider()).CollisionInformation.CollisionRules.Group = HalkShipGroup;
            }

            INTEREST_TIME = 50; // Default for ship is 20

            Shields = 3; // TO SHOW SCALING BARS
        }
Пример #11
0
        public HalkBomber(long _uniqueId, Vector3 _position, Quaternion _rotation, SpawnShip _home)
            : base(_uniqueId, _position, _rotation, Team.Halk, _home)
        {
            laserOffsets = new Vector3[] {
                new Vector3(-2.48f, -0.305f, 62.472f),
                new Vector3(2.48f, -0.305f, 62.472f)
            };
            MAX_SECONDARY_AMMO = 100;
            SecondaryAmmo = MaxSecondaryAmmo;
            SECONDARY_RANGE = 7000000f;

            randomUnitVectors = new Vector3[SECONDARY_LOCATION_COUNT];
            for (int i = 0; i < SECONDARY_LOCATION_COUNT; i++)
            {
                randomUnitVectors[i] = getRandomUnitVector(i * 30);
            }

            #region Bomb Positions
            secondaryAttackPositions = new Vector3[] {
                new Vector3(-8.268f, -4.127f+Y_ADJ, 4.685f),
                new Vector3(-3.615f, -5.795f+Y_ADJ, 4.607f),
                new Vector3(-6.143f, -4.945f+Y_ADJ, 2.546f),

                new Vector3(-8.596f, -4.116f+Y_ADJ, 0.959f),
                new Vector3(-3.291f, -5.071f+Y_ADJ, 1.351f),
                new Vector3(-5.921f, -5.815f+Y_ADJ, -0.613f),

                new Vector3(-8.361f, -3.464f+Y_ADJ, -2.266f),
                new Vector3(-3.354f, -5.013f+Y_ADJ, -2.49f),
                new Vector3(-8.641f, -4.621f+Y_ADJ, -5.479f),

                new Vector3(-5.706f, -4.958f+Y_ADJ, -4.815f),
                new Vector3(-2.866f, -4.106f+Y_ADJ, -5.565f),
                new Vector3(3.627f,  -5.7878f+Y_ADJ, 4.771f),

                new Vector3(8.073f,  -4.125f+Y_ADJ,  4.694f),
                new Vector3(6.017f,  -4.945f+Y_ADJ,  2.546f),
                new Vector3(3.165f,  -5.071f+Y_ADJ,  1.351f),

                new Vector3( 8.47f,  -4.116f+Y_ADJ, 0.959f),
                new Vector3( 5.795f, -5.815f+Y_ADJ, -0.613f),
                new Vector3( 3.228f, -5.013f+Y_ADJ, -2.49f),

                new Vector3( 8.235f, -3.464f+Y_ADJ, -2.266f),
                new Vector3( 2.666f, -4.496f+Y_ADJ, -5.521f),
                new Vector3( 5.58f,  -4.958f+Y_ADJ, -4.815f),

                new Vector3( 8.515f, -4.621f+Y_ADJ, -5.479f),
            };
            #endregion

            #region Bomb Rotations
            secondaryAttackForward = new Quaternion[] {
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(165.8f), MathHelper.ToRadians(67.621f), MathHelper.ToRadians(6.381f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(168.184f), MathHelper.ToRadians(74.474f), MathHelper.ToRadians(9.495f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(170.968f), MathHelper.ToRadians(68.803f), MathHelper.ToRadians(5.85f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(170.423f), MathHelper.ToRadians(67.126f), MathHelper.ToRadians(0.571f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(181.767f), MathHelper.ToRadians(70.274f), MathHelper.ToRadians(-4.997f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(179.686f), MathHelper.ToRadians(69.068f), MathHelper.ToRadians(-1.972f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(181.435f), MathHelper.ToRadians(65.41f), MathHelper.ToRadians(-4.97f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(189.469f), MathHelper.ToRadians(69.009f), MathHelper.ToRadians(-13.12f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(186.14f), MathHelper.ToRadians(69.205f), MathHelper.ToRadians(-14.322f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(193.884f), MathHelper.ToRadians(65.793f), MathHelper.ToRadians(-16.371f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(208.472f), MathHelper.ToRadians(67.824f), MathHelper.ToRadians(-24.064f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(168.312f), MathHelper.ToRadians(68.03f), MathHelper.ToRadians(12.955f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(169.998f), MathHelper.ToRadians(62.666f), MathHelper.ToRadians(18.547f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(170.241f), MathHelper.ToRadians(64.076f), MathHelper.ToRadians(10.923f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(138.405f), MathHelper.ToRadians(85.942f), MathHelper.ToRadians(44.306f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(175.988f), MathHelper.ToRadians(61.855f), MathHelper.ToRadians(8.656f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(179.789f), MathHelper.ToRadians(64.408f), MathHelper.ToRadians(4.737f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(194.024f), MathHelper.ToRadians(70.003f), MathHelper.ToRadians(-7.678f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(175.682f), MathHelper.ToRadians(61.992f), MathHelper.ToRadians(9.909f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(204.705f), MathHelper.ToRadians(70.345f), MathHelper.ToRadians(-23.08f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(208.82f), MathHelper.ToRadians(75.323f), MathHelper.ToRadians(-24.299f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(189.112f), MathHelper.ToRadians(76.931f), MathHelper.ToRadians(0.881f)),
            };
            #endregion

            trailGenerators.Add(new HEngineTrailGenerator(this, new Vector3(8.455f, -0.823f, -24.89f))); // -14.89f
            trailGenerators.Add(new HEngineTrailGenerator(this, new Vector3(1.154f, 1.198f, -24.89f)));
            trailGenerators.Add(new HEngineTrailGenerator(this, new Vector3(-0.231f, 3.664f, -24.89f)));
            trailGenerators.Add(new HEngineTrailGenerator(this, new Vector3(-2.671f, 0.458f, -24.89f)));
            trailGenerators.Add(new HEngineTrailGenerator(this, new Vector3(-0.881f, -1.909f, -24.89f)));
            trailGenerators.Add(new HEngineTrailGenerator(this, new Vector3(1.87f, -1.911f, -24.89f)));
            trailGenerators.Add(new HEngineTrailGenerator(this, new Vector3(-8.455f, -0.823f, -24.89f)));

            //trailGenerators.Add(new EEngineTrailGenerator(this, new Vector3(8.455f, -0.823f, -14.89f)));
            //trailGenerators.Add(new EEngineTrailGenerator(this, new Vector3(1.154f, 1.198f, -14.89f)));
            //trailGenerators.Add(new EEngineTrailGenerator(this, new Vector3(-0.231f, 3.664f, -14.89f)));
            //trailGenerators.Add(new EEngineTrailGenerator(this, new Vector3(-2.671f, 0.458f, -14.89f)));
            //trailGenerators.Add(new EEngineTrailGenerator(this, new Vector3(-0.881f, -1.909f, -14.89f)));
            //trailGenerators.Add(new EEngineTrailGenerator(this, new Vector3(1.87f, -1.911f, -14.89f)));
            //trailGenerators.Add(new EEngineTrailGenerator(this, new Vector3(-8.455f, -0.823f, -14.89f)));

            setCloseModelByString("Models/Ships/Halk_Bomber");
            setFarModelByString("Models/Ships/Bomber_LoD");
        }
        public EsxolusInterceptor(long _uniqueId, Vector3 _position, Quaternion _rotation, SpawnShip _home)
            : base(_uniqueId, _position, _rotation, Team.Esxolus, _home)
        {
            laserOffsets = new Vector3[] {
                new Vector3(-3.342f, -0.594f, 35.574f),
                new Vector3(3.342f, -0.594f, 35.574f)
            };
            MAX_SECONDARY_AMMO = 9;
            SecondaryAmmo = MaxSecondaryAmmo;
            SECONDARY_RANGE = 6000000f;

            secondaryAttackPositions = new Vector3[] {
                new Vector3(1.388f, -0.801f, 6.8f),
                new Vector3(-1.388f, -0.801f, 6.8f),
            };
            secondaryAttackForward = new Quaternion[] {
                // Left Side
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(0f), MathHelper.ToRadians(-1.772f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(0f), MathHelper.ToRadians(-0.121f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(0f), MathHelper.ToRadians(1.53f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(-1.429f), MathHelper.ToRadians(-2.579f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(-1.429f), MathHelper.ToRadians(-0.934f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(-1.429f), MathHelper.ToRadians(0.711f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(-1.429f), MathHelper.ToRadians(2.356f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(-2.857f), MathHelper.ToRadians(-3.41f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(-2.857f), MathHelper.ToRadians(-1.76f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(-2.857f), MathHelper.ToRadians(-0.115f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(-2.857f), MathHelper.ToRadians(1.545f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(-2.857f), MathHelper.ToRadians(3.18f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(-4.281f), MathHelper.ToRadians(-2.579f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(-4.281f), MathHelper.ToRadians(-0.934f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(-4.281f), MathHelper.ToRadians(0.711f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(-4.281f), MathHelper.ToRadians(2.356f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(-5.699f), MathHelper.ToRadians(-1.772f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(-5.699f), MathHelper.ToRadians(-0.121f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(-5.699f), MathHelper.ToRadians(1.53f), MathHelper.ToRadians(0f)),
                // Right Side
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(0f), MathHelper.ToRadians(-1.772f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(0f), MathHelper.ToRadians(-0.121f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(0f), MathHelper.ToRadians(1.53f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(1.429f), MathHelper.ToRadians(-2.579f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(1.429f), MathHelper.ToRadians(-0.934f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(1.429f), MathHelper.ToRadians(0.711f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(1.429f), MathHelper.ToRadians(2.356f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(2.857f), MathHelper.ToRadians(-3.41f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(2.857f), MathHelper.ToRadians(-1.76f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(2.857f), MathHelper.ToRadians(-0.115f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(2.857f), MathHelper.ToRadians(1.545f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(2.857f), MathHelper.ToRadians(3.18f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(4.281f), MathHelper.ToRadians(-2.579f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(4.281f), MathHelper.ToRadians(-0.934f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(4.281f), MathHelper.ToRadians(0.711f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(4.281f), MathHelper.ToRadians(2.356f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(5.699f), MathHelper.ToRadians(-1.772f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(5.699f), MathHelper.ToRadians(-0.121f), MathHelper.ToRadians(0f)),
                Quaternion.CreateFromYawPitchRoll(MathHelper.ToRadians(5.699f), MathHelper.ToRadians(1.53f), MathHelper.ToRadians(0f)),
            };

            trailGenerators.Add(new EEngineTrailGenerator(this, new Vector3(4.041f, -0.191f, -11.169f)));
            trailGenerators.Add(new EEngineTrailGenerator(this, new Vector3(-4.041f, -0.191f, -11.169f)));

            setCloseModelByString("Models/Ships/esxolus_interceptor_model");
            setFarModelByString("Models/Ships/esxolus_interceptor__LP_model");
        }
        public HalkInterceptor(long _uniqueId, Vector3 _position, Quaternion _rotation, SpawnShip _home)
            : base(_uniqueId, _position, _rotation, Team.Halk, _home)
        {
            laserOffsets = new Vector3[] {
                new Vector3(-3.382f, -2.532f, 59.654f),
                new Vector3(3.382f, -2.532f, 59.654f)
            };
            MAX_SECONDARY_AMMO = 9;
            SecondaryAmmo = MaxSecondaryAmmo;
            SECONDARY_RANGE = 8000000f;

            randomUnitVectors = new Vector3[SECONDARY_LOCATION_COUNT];
            for (int i = 0; i < SECONDARY_LOCATION_COUNT; i++)
            {
                randomUnitVectors[i] = getRandomUnitVector((int)(i * RANDOM_SCALE));
            }

            #region Missle Positions
            secondaryAttackPositions = new Vector3[] {
                new Vector3(4.874f, 1.64f, 10.611f),
                new Vector3(5.529f, 1.64f, 10.039f),
                new Vector3(6.153f, 1.64f, 10.508f),
                new Vector3(6.809f, 1.64f, 9.08f),

                new Vector3(4.874f, 0.778f, 10.611f),
                new Vector3(5.529f, 0.778f, 10.039f),
                new Vector3(6.153f, 0.778f, 10.508f),
                new Vector3(6.809f, 0.778f, 9.08f),

                new Vector3(4.874f, -0.031f, 10.611f),
                new Vector3(5.529f, -0.031f, 10.039f),
                new Vector3(6.153f, -0.031f, 10.508f),
                new Vector3(6.809f, -0.031f, 9.08f),

                new Vector3(-4.874f, 1.64f, 10.611f),
                new Vector3(-5.529f, 1.64f, 10.039f),
                new Vector3(-6.153f, 1.64f, 10.508f),
                new Vector3(-6.809f, 1.64f, 9.08f),

                new Vector3(-4.874f, 0.778f, 10.611f),
                new Vector3(-5.529f, 0.778f, 10.039f),
                new Vector3(-6.153f, 0.778f, 10.508f),
                new Vector3(-6.809f, 0.778f, 9.08f),

                new Vector3(-4.874f, -0.031f, 10.611f),
                new Vector3(-5.529f, -0.031f, 10.039f),
                new Vector3(-6.153f, -0.031f, 10.508f),
                new Vector3(-6.809f, -0.031f, 9.08f),
            };
            #endregion

            secondaryAttackForward = new Quaternion[]{
                Quaternion.CreateFromAxisAngle(Vector3.Right, MathHelper.ToRadians(0.733f)),
                Quaternion.CreateFromAxisAngle(Vector3.Right, MathHelper.ToRadians(-0.733f)),
            };

            trailGenerators.Add(new HEngineTrailGenerator(this, new Vector3(3.39f, 3.917f, -22.27f))); // -12.27f
            trailGenerators.Add(new HEngineTrailGenerator(this, new Vector3(-3.39f, 3.917f, -22.27f)));
            trailGenerators.Add(new HEngineTrailGenerator(this, new Vector3(-3.39f, -2.486f, -22.27f)));
            trailGenerators.Add(new HEngineTrailGenerator(this, new Vector3(3.39f, -2.486f, -22.27f)));

            //trailGenerators.Add(new EEngineTrailGenerator(this, new Vector3(3.39f, 3.917f, -12.27f)));
            //trailGenerators.Add(new EEngineTrailGenerator(this, new Vector3(-3.39f, 3.917f, -12.27f)));
            //trailGenerators.Add(new EEngineTrailGenerator(this, new Vector3(-3.39f, -2.486f, -12.27f)));
            //trailGenerators.Add(new EEngineTrailGenerator(this, new Vector3(3.39f, -2.486f, -12.27f)));

            setCloseModelByString("Models/Ships/Halk_interceptor");
            setFarModelByString("Models/Ships/Halk_interceptor");
        }