public virtual void Trigger(PlayerShip p) { SoundManager.PlaySound("BigBombExplode2", 1, 0, 0); SoundManager.DeafTone(); p.ShakeScreen(2500); LinkedListNode <GameObject> CurrentNode = p.ParentScene.Children.First; Vector3 Position3 = new Vector3(p.Position.X(), 0, p.Position.Y()); for (int i = 0; i < 100; i++) { ParticleManager.CreateParticle(Position3, Rand.V3() * 20, ParticleColor, 60, 5); } ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 4000, 5); for (int i = 0; i < 20; i++) { FlamingChunkSystem.AddParticle(Position3, Rand.V3() * 10, new Vector3(0, -0.25f, 0), Rand.V3(), Rand.V3() / 10, 40, 30, new Vector3(1, 0.5f, 0.2f), new Vector3(1, 0.1f, 0.2f), 0, 3); } for (int i = 0; i < 50; i++) { ParticleManager.CreateParticle(Position3, Rand.V3() * 15, new Color(1, 0.75f, 0.5f), 200, 5); } ParticleManager.CreateParticle(Position3, Vector3.Zero, new Color(1, 0.75f, 0.5f), 2000, 4); ParticleManager.CreateParticle(Position3, Vector3.Zero, new Color(1, 0.75f, 0.5f), 3000, 4); ParticleManager.CreateParticle(Position3, Vector3.Zero, new Color(1, 0.75f, 0.5f), 4000, 4); ParticleManager.CreateParticle(Position3, Vector3.Zero, new Color(1, 0.75f, 0.5f), 500, 5); ParticleManager.CreateParticle(Position3, Vector3.Zero, new Color(1, 0.75f, 0.5f), 1000, 5); ParticleManager.CreateParticle(Position3, Vector3.Zero, new Color(1, 0.75f, 0.5f), 2000, 5); ParticleManager.CreateParticle(Position3, Vector3.Zero, new Color(1, 0.75f, 0.5f), 3000, 5); ParticleManager.CreateParticle(Position3, Vector3.Zero, new Color(1, 0.75f, 0.5f), 4000, 5); //ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 500, 7); //ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 750, 7); //ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 1000, 7); while (CurrentNode != null) { GameObject g = CurrentNode.Value; if (g.GetType().IsSubclassOf(typeof(UnitShip))) { UnitShip u = (UnitShip)g; u.Damage(100000, 0, Vector2.One, p, AttackType.Explosion); u.Damage(100000, 0, Vector2.One, p, AttackType.Explosion); WaveManager.EndWave(); } CurrentNode = CurrentNode.Next; } }
public override void Destroy() { SoundManager.PlaySound("SmallBombExplode", 1, 0, 0); SoundManager.DeafTone(); PlayerShip ParentPlayer = (PlayerShip)ParentUnit; ParentPlayer.ShakeScreen(20); this.Armed = false; Vector3 Position3 = new Vector3(Position.X(), 0, Position.Y()); for (int i = 0; i < 10; i++) { ParticleManager.CreateParticle(Position3, Rand.V3() * 6, ParticleColor, 20, 5); } ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 4000, 5); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 400, 7); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 300, 7); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 500, 7); for (int i = 0; i < 10; i++) { FlamingChunkSystem.AddParticle(Position3, Rand.V3(), new Vector3(0, -0.25f, 0), Rand.V3(), Rand.V3() / 10, 20, 60, new Vector3(1, 0.5f, 0.2f), new Vector3(1, 0.1f, 0.2f), 0, 3); } ParticleManager.CreateParticle(Position3, Vector3.Zero, new Color(1, 0.75f, 0.5f), 500, 4); for (int i = 0; i < 30; i++) { ParticleManager.CreateParticle(Position3, Rand.V3() * 10, new Color(1, 0.75f, 0.5f), 200, 5); } QuadGrid quadGrid = Parent2DScene.quadGrids.First.Value; foreach (GameObject g in quadGrid.Enumerate(Position.get(), new Vector2(BulletExplosionDistance))) { if (g.GetType().IsSubclassOf(typeof(UnitBasic))) { UnitBasic s = (UnitBasic)g; if (Vector2.Distance(Position.get(), s.Position.get()) < BulletExplosionDistance / 4 && !s.IsAlly(ParentUnit) && !s.GetType().IsSubclassOf(typeof(UnitBuilding))) { s.SmallBomb(ParentUnit); } } } base.Destroy(); }
public override void BlowUp() { if (!Dead) { SoundManager.PlaySound("MiningRingExplode2", 1, 0, 0); SoundManager.DeafTone(); Dead = true; DoExplosion(); foreach (Faction f in FactionManager.Factions) { if (f.Team != GetTeam()) { f.roundReport.MiningPlatformsLost++; f.AddEvent("Mining Platform Destroyed!", new Color(1, 0.5f, 0.5f), FactionEvent.KillTexture); } else { f.roundReport.MiningPlatformsLost++; f.AddEvent("Mining Platform Lost!", new Color(1, 0.5f, 0.5f), FactionEvent.LossTexture); } } FactionManager.TeamStreak[GetTeam()] = -1; FactionManager.Factions[FactionNumber].MiningPlatformCount--; if (FactionManager.Factions[FactionNumber].MiningPlatformCount < 1) { FactionManager.Factions[FactionNumber].Dead = true; bool TeamAlive = false; foreach (Faction f in FactionManager.Factions) { if (!f.Dead && f.Team == GetTeam()) { TeamAlive = true; break; } } if (!TeamAlive) { if (FactionManager.TeamDead.ContainsKey(GetTeam())) { FactionManager.TeamDead[GetTeam()] = true; } else { FactionManager.TeamDead.Add(GetTeam(), true); } WaveManager.SetState(PlayerEliminatedState.self); } } MyRock.setPlatform(null); BulletExplosionDistance = 1000; BulletExplosionDamage = 10; } Destroy(); }