Exemple #1
0
        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);
        }
Exemple #2
0
        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;
                }
            }
        }
Exemple #3
0
 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);
             }
         }
     }
 }
Exemple #4
0
        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();
            }
        }
Exemple #5
0
        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);
                }
            }
        }
Exemple #6
0
        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);
                }
            }
        }