public override bool Trigger(PlayerShip p) { fireMode.Ammo = 1000; fireMode.SetParent(p); fireMode.Fire(p.Guns[0].Rotation); return(true); }
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 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); }
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); }
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); }
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; }