Esempio n. 1
0
        public override void Update()
        {
            CheckIfChangingState();

            AttackBox = new Rectangle(CollRectangle.X, CollRectangle.Y - (Main.Tilesize * 4), Main.Tilesize, Main.Tilesize * 4);

            if (_isFlaming)
            {

                if (_particleTimer.TimeElapsedInMilliSeconds > 100)
                {
                    FlameParticle par = new FlameParticle(this, Color.LightBlue);
                    FlameParticle par2 = new FlameParticle(this, Color.Red);
                    FlameParticle par3 = new FlameParticle(this, Color.Yellow);
                    GameWorld.Instance.Particles.Add(par);
                    GameWorld.Instance.Particles.Add(par2);
                    GameWorld.Instance.Particles.Add(par3);
                    _particleTimer.Reset();
                    _flameSound.PlayIfStopped();
                }
            }
            else
            {
                _flameSound.Stop();
            }

            Player.Player player = GameWorld.Instance.Player;
            if (_isFlaming && AttackBox.Intersects(player.GetCollRectangle()))
            {
                player.IsOnFire = true;
            }

            base.Update();
        }
Esempio n. 2
0
        private static void Spawn_WallOfFleshGoatMountFlames(ParticleOrchestraSettings settings)
        {
            float num = 50f;

            for (int i = -1; i <= 1; i++)
            {
                int num2 = Main.rand.NextFromList(new short[3]
                {
                    326,
                    327,
                    328
                });
                Main.instance.LoadProjectile(num2);
                Player        player        = Main.player[settings.IndexOfPlayerWhoInvokedThis];
                float         scaleFactor   = Main.rand.NextFloat() * 0.9f + 0.1f;
                Vector2       vector        = settings.PositionInWorld + new Vector2((float)i * 5.33333349f, 0f);
                FlameParticle flameParticle = _poolFlame.RequestParticle();
                flameParticle.SetBasicInfo(TextureAssets.Projectile[num2], null, Vector2.Zero, vector);
                flameParticle.SetTypeInfo(num, settings.IndexOfPlayerWhoInvokedThis, player.cMount);
                flameParticle.FadeOutNormalizedTime = 0.3f;
                flameParticle.ScaleAcceleration     = Vector2.One * scaleFactor * -0.0166666675f / num;
                flameParticle.Scale = Vector2.One * scaleFactor;
                Main.ParticleSystem_World_BehindPlayers.Add(flameParticle);
                if (Main.rand.Next(8) == 0)
                {
                    Dust dust = Dust.NewDustDirect(vector, 4, 4, 6, 0f, 0f, 100);
                    if (Main.rand.Next(2) == 0)
                    {
                        dust.noGravity = true;
                        dust.fadeIn    = 1.15f;
                    }
                    else
                    {
                        dust.scale = 0.6f;
                    }
                    dust.velocity   *= 0.6f;
                    dust.velocity.Y -= 1.2f;
                    dust.noLight     = true;
                    dust.position.Y -= 4f;
                    dust.shader      = GameShaders.Armor.GetSecondaryShader(player.cMount, player);
                }
            }
        }
Esempio n. 3
0
        private static void Spawn_WallOfFleshGoatMountFlames(ParticleOrchestraSettings settings)
        {
            float timeToLive = 50f;

            for (int index = -1; index <= 1; ++index)
            {
                int i = (int)Main.rand.NextFromList <short>((short)326, (short)327, (short)328);
                Main.instance.LoadProjectile(i);
                Player        player        = Main.player[(int)settings.IndexOfPlayerWhoInvokedThis];
                float         num           = (float)((double)Main.rand.NextFloat() * 0.899999976158142 + 0.100000001490116);
                Vector2       vector2       = settings.PositionInWorld + new Vector2((float)index * 5.333333f, 0.0f);
                FlameParticle flameParticle = ParticleOrchestrator._poolFlame.RequestParticle();
                flameParticle.SetBasicInfo(TextureAssets.Projectile[i], new Rectangle?(), Vector2.Zero, vector2);
                flameParticle.SetTypeInfo(timeToLive, (int)settings.IndexOfPlayerWhoInvokedThis, player.cMount);
                flameParticle.FadeOutNormalizedTime = 0.3f;
                flameParticle.ScaleAcceleration     = Vector2.One * num * -0.01666667f / timeToLive;
                flameParticle.Scale = Vector2.One * num;
                Main.ParticleSystem_World_BehindPlayers.Add((IParticle)flameParticle);
                if (Main.rand.Next(8) == 0)
                {
                    Dust dust = Dust.NewDustDirect(vector2, 4, 4, 6, 0.0f, 0.0f, 100, new Color(), 1f);
                    if (Main.rand.Next(2) == 0)
                    {
                        dust.noGravity = true;
                        dust.fadeIn    = 1.15f;
                    }
                    else
                    {
                        dust.scale = 0.6f;
                    }
                    dust.velocity   *= 0.6f;
                    dust.velocity.Y -= 1.2f;
                    dust.noLight     = true;
                    dust.position.Y -= 4f;
                    dust.shader      = GameShaders.Armor.GetSecondaryShader(player.cMount, player);
                }
            }
        }