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(); }
public override bool Trigger(PlayerShip p) { fireMode.Ammo = 1000; fireMode.SetParent(p); fireMode.Fire(p.Guns[0].Rotation); return(true); }
public override void BlowUp() { if (!Dead && DeathWave) { fireMode.Fire(Rotation.getAsRadians()); } base.BlowUp(); }
public override void Update(GameTime gameTime) { NoShootTime = -1; FreezeTime = -1; if (stingRayEmpFireMode.Ammo > 0 && CurrentAttackTarget != null && CurrentAttackTarget.GetType().IsSubclassOf(typeof(UnitTurret)) && !MarkedTurrets.Contains((UnitTurret)CurrentAttackTarget)) { stingRayEmpFireMode.SetLevel(UnitLevel); stingRayEmpFireMode.Fire(Logic.ToAngle(CurrentAttackTarget.Position.get() - Position.get())); stingRayEmpFireMode.Ammo = 0; MarkedTurrets.AddLast((UnitTurret)CurrentAttackTarget); } base.Update(gameTime); }
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); }