private void SelfDestruct() { m_destroyed = true; var effects = new List <Tuple <string, int> >() { Tuple.Create(EffectName.BulletHitMetal, 1), Tuple.Create(EffectName.Steam, 2), Tuple.Create(EffectName.Electric, 4), }; foreach (var effect in effects) { var effectName = effect.Item1; var count = effect.Item2; for (var i = 0; i < count; i++) { var position = RandomHelper.WithinArea(Player.GetAABB()); Game.PlayEffect(effectName, position); } } for (var i = 0; i < 4; i++) { var debrisLinearVelocity = RandomHelper.Direction(15, 165) * 10; var debris = Game.CreateObject(RandomHelper.GetItem(DebrisList), Position, 0f, debrisLinearVelocity, 0f); debris.SetMaxFire(); Game.CreateObject(RandomHelper.GetItem(DebrisList), Position, 0f, debrisLinearVelocity * -Vector2.UnitX, 0f); if (RandomHelper.Boolean()) { Game.CreateObject(RandomHelper.GetItem(WiringTubeList), Position, 0f, RandomHelper.Direction(0, 180) * 6, 0f); } } Game.TriggerExplosion(Position); }
private void UpdateBrokenEffects(float elapsed) { if (HasDamage(TurretDamage.SensorDamaged) || HasDamage(TurretDamage.RotorDamaged) || HasDamage(TurretDamage.ControllerDamaged)) { var effectTime = 1500; if (HasDamage(TurretDamage.SensorDamaged)) { effectTime -= 200; } if (HasDamage(TurretDamage.RotorDamaged)) { effectTime -= 200; } if (HasDamage(TurretDamage.ControllerDamaged)) { effectTime -= 200; } m_sparkEffectTime += elapsed; if (m_sparkEffectTime >= effectTime) { if (RandomHelper.Boolean()) { m_sparkEffectTime -= RandomHelper.Between(0, 1500); } else { m_sparkEffectTime = 0f; Game.PlayEffect(EffectName.ItemGleam, m_rotor.Object.GetWorldPosition()); Game.PlayEffect(EffectName.DestroyMetal, m_rotor.Object.GetWorldPosition()); Game.PlaySound("ElectricSparks", m_rotor.Object.GetWorldPosition()); } } } if (HasDamage(TurretDamage.BarrelDamaged)) { m_smokeEffectTime += elapsed; if (m_smokeEffectTime >= 500) { Game.PlayEffect(EffectName.Dig, m_tip.GetWorldPosition()); m_smokeEffectTime = 0f; } } }
private void PlayShinyEffect(float elapsed) { for (var i = 0; i < m_effectTimes.Count; i++) { m_effectTimes[i] += elapsed; if (m_effectTimes[i] >= 400) { if (RandomHelper.Boolean()) { Game.PlayEffect(EffectName.ItemGleam, RandomHelper.WithinArea(Player.GetAABB())); m_effectTimes[i] = 0; } else { m_effectTimes[i] = RandomHelper.Between(0, 400); } } } }
public override void OnDeath(PlayerDeathArgs args) { base.OnDeath(args); if (Player == null || m_useDoubleBody) { return; } if (args.Removed) { SelfDestruct(); } else { if (RandomHelper.Boolean()) { SelfDestruct(); } } if (!m_useDoubleBody && !m_destroyed) { m_useDoubleBody = true; var doubleBody = Game.CreatePlayer(Position); Decorate(doubleBody); var newMod = doubleBody.GetModifiers(); newMod.CurrentHealth = newMod.MaxHealth; doubleBody.SetModifiers(newMod); doubleBody.SetValidBotEliminateTarget(false); doubleBody.SetStatusBarsVisible(false); doubleBody.SetNametagVisible(false); doubleBody.SetFaceDirection(Player.GetFaceDirection()); BotManager.SetPlayer(this, doubleBody); Player.Remove(); Player = doubleBody; StartDeathKneeling(); } }
private void UpdateCorpse(float elapsed) { if (!Player.IsDead) { return; // Safeguard } m_electricElapsed += elapsed; if (m_electricElapsed >= 1000) { if (RandomHelper.Boolean()) { var position = Player.GetWorldPosition(); position.X += RandomHelper.Between(-10, 10); position.Y += RandomHelper.Between(-10, 10); Game.PlayEffect(EffectName.Electric, position); if (RandomHelper.Boolean()) { Game.PlayEffect(EffectName.Steam, position); Game.PlayEffect(EffectName.Steam, position); Game.PlayEffect(EffectName.Steam, position); } if (RandomHelper.Boolean()) { Game.PlayEffect(EffectName.Sparks, position); } if (RandomHelper.Boolean()) { Game.PlayEffect(EffectName.Fire, position); } Game.PlaySound("ElectricSparks", position); m_electricElapsed = 0f; } else { m_electricElapsed -= RandomHelper.Between(0, m_electricElapsed); } } }
private void UpdateNearDeathEffects(float elapsed, float healthLeft) { m_electricElapsed += elapsed; if (m_electricElapsed >= 700) { if (RandomHelper.Boolean()) { var position = RandomHelper.WithinArea(Player.GetAABB()); if (healthLeft <= 0.2f) { Game.PlayEffect(EffectName.Fire, position); Game.PlaySound("Flamethrower", position); } if (healthLeft <= 0.3f) { Game.PlayEffect(EffectName.Sparks, position); } if (healthLeft <= 0.4f) { if (RandomHelper.Boolean()) { Game.PlayEffect(EffectName.Steam, position); Game.PlayEffect(EffectName.Steam, position); } Game.PlayEffect(EffectName.Electric, position); Game.PlaySound("ElectricSparks", position); } m_electricElapsed = 0f; } else { m_electricElapsed -= RandomHelper.Between(0, m_electricElapsed); } } }