Beispiel #1
0
 public override bool Trigger(PlayerShip p)
 {
     fireMode.Ammo = 1000;
     fireMode.SetParent(p);
     fireMode.Fire(p.Guns[0].Rotation);
     return(true);
 }
Beispiel #2
0
        public override void Destroy()
        {
            Vector2 PreviousPosition = ParentUnit.Position.get();

            ParentUnit.Position.set(Position.get());

            scatterTurretFireMode.SetParent(ParentUnit);

            for (int i = 0; i < 8; i++)
            {
                scatterTurretFireMode.Fire((float)Math.PI * 2 / 8f * i);
            }

            ParentUnit.Position.set(PreviousPosition);

            Vector3 Position3 = new Vector3(Position.X(), 0, Position.Y());

            for (int i = 0; i < 10; i++)
            {
                ParticleManager.CreateParticle(Position3, Rand.V3() * 10, ParticleColor, 50, 5);
            }

            ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 1000, 5);
            ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 400, 0);
            ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 400, 4);

            base.Destroy();
        }
Beispiel #3
0
        public override void Create()
        {
            CollisionSound = "DevourerImpact";
            base.Create();
            Size.set(new Vector2(40));

            Weakness    = AttackType.Blue;
            Resistence  = AttackType.Green;
            ShieldColor = new Color(0.5f, 1, 0.5f);

            fireMode = new DevourerFireMode();
            fireMode.SetParent(this);
        }
Beispiel #4
0
        public Pitbull(int FactionNumber)
            : base(FactionNumber)
        {
            DeathSound      = "EmpImpact";
            DeathVolume     = 1;
            DeathDistance   = 1400;
            DeathExponenent = 2f;

            CollisionSound = "PitbullImpact";
            Add(UnitTag.Light);
            Add(UnitTag.Human);
            fireMode = new PitbullFireMode();
            fireMode.SetParent(this);
        }
Beispiel #5
0
 public override void Update(GameTime gameTime)
 {
     if (Shots > 0)
     {
         PauseTime += gameTime.ElapsedGameTime.Milliseconds;
         if (PauseTime > MaxPauseTime)
         {
             if (MissileAttackTarget == null || !MissileAttackTarget.CanBeTargeted())
             {
                 float BestDistance = 100000;
                 foreach (BasicShipGameObject o in FactionManager.SortedUnits[WaveManager.ActiveTeam])
                 {
                     if (o.GetType().IsSubclassOf(typeof(UnitTurret)))
                     {
                         float d = Vector2.Distance(Position.get(), o.Position.get());
                         if (d < BestDistance)
                         {
                             BestDistance        = d;
                             MissileAttackTarget = (UnitTurret)o;
                         }
                     }
                 }
             }
             else
             {
                 float TargetRotation = Logic.ToAngle(MissileAttackTarget.Position.get() - Position.get());
                 Rotation.set(MathHelper.ToDegrees(Logic.Clerp(Rotation.getAsRadians(), TargetRotation, RotationSpeed * gameTime.ElapsedGameTime.Milliseconds * 60.0f / 1000.0f)));
                 RotationMatrix = Matrix.CreateFromYawPitchRoll(Rotation.getAsRadians() + RotationOffset.X, RotationOffset.Y, RotationOffset.Z);
                 if (Math.Abs(Rotation.getAsRadians() - TargetRotation) < 0.1f)
                 {
                     PauseTime = 0;
                     Shots     = 1;
                     EmpFireMode.SetParent(this);
                     EmpFireMode.Fire(TargetRotation);
                 }
             }
         }
     }
     base.Update(gameTime);
 }
Beispiel #6
0
        public Immortal(int FactionNumber)
            : base(FactionNumber)
        {
            DeathSound      = "HeavyMonsterExplode";
            DeathVolume     = 1;
            DeathDistance   = 1200;
            DeathExponenent = 1.5f;

            CollisionSound        = "CrusherImpact";
            HullToughness         = 0.5f;
            ShieldToughness       = 0.5f;
            MaxEngagementDistance = 500;
            MinEngagementDistance = 200;
            Acceleration          = 0.15f;
            Add(new ImmortalGun());
            Add(UnitTag.Heavy);
            Mass = 5f;

            fireMode = new ImmortalDeathFireMode();
            fireMode.SetParent(this);
            ScoreToGive = 20;
        }
        public Stingray(int FactionNumber)
            : base(FactionNumber)
        {
            DeathSound      = "HeavyHumanExplode";
            DeathVolume     = 1;
            DeathDistance   = 1200;
            DeathExponenent = 1.5f;

            CollisionSound        = "HeavyImpact";
            HullToughness         = 75f;
            ShieldToughness       = 25f;
            MaxEngagementDistance = 800;
            MinEngagementDistance = 150;
            Acceleration          = 0.05f;
            Add(new StingRayGun());
            Add(UnitTag.Heavy);
            Add(UnitTag.Human);

            stingRayEmpFireMode = new StingRayEmpFireMode();
            stingRayEmpFireMode.SetParent(this);

            Mass        = 10;
            ScoreToGive = 50;
        }