// Decompiled with JetBrains decompiler
// Type: Terraria.Dust
// Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null
// MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83
// Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe

using Microsoft.Xna.Framework;
using System;
using Terraria.GameContent;
using Terraria.GameContent.Events;
using Terraria.Graphics.Shaders;
using Terraria.Utilities;

namespace Terraria
{
  public class Dust
  {
    public static float dCount;
    public static int lavaBubbles;
    public static int SandStormCount;
    public int dustIndex;
    public Vector2 position;
    public Vector2 velocity;
    public float fadeIn;
    public bool noGravity;
    public float scale;
    public float rotation;
    public bool noLight;
    public bool noLightEmittence;
    public bool active;
    public int type;
    public Color color;
    public int alpha;
    public Rectangle frame;
    public ArmorShaderData shader;
    public object customData;
    public bool firstFrame;

    public static Dust NewDustPerfect(
      Vector2 Position,
      int Type,
      Vector2? Velocity = null,
      int Alpha = 0,
      Color newColor = default (Color),
      float Scale = 1f)
    {
      Dust dust = Main.dust[Dust.NewDust(Position, 0, 0, Type, Alpha: Alpha, newColor: newColor, Scale: Scale)];
      dust.position = Position;
      if (Velocity.HasValue)
        dust.velocity = Velocity.Value;
      return dust;
    }

    public static Dust NewDustDirect(
      Vector2 Position,
      int Width,
      int Height,
      int Type,
      float SpeedX = 0.0f,
      float SpeedY = 0.0f,
      int Alpha = 0,
      Color newColor = default (Color),
      float Scale = 1f)
    {
      Dust dust = Main.dust[Dust.NewDust(Position, Width, Height, Type, SpeedX, SpeedY, Alpha, newColor, Scale)];
      if (dust.velocity.HasNaNs())
        dust.velocity = Vector2.Zero;
      return dust;
    }

    public static int NewDust(
      Vector2 Position,
      int Width,
      int Height,
      int Type,
      float SpeedX = 0.0f,
      float SpeedY = 0.0f,
      int Alpha = 0,
      Color newColor = default (Color),
      float Scale = 1f)
    {
      if (Main.gameMenu)
        return 6000;
      if (Main.rand == null)
        Main.rand = new UnifiedRandom((int) DateTime.Now.Ticks);
      if (Main.gamePaused || WorldGen.gen || Main.netMode == 2)
        return 6000;
      int num1 = (int) (400.0 * (1.0 - (double) Dust.dCount));
      if (!new Rectangle((int) ((double) Main.screenPosition.X - (double) num1), (int) ((double) Main.screenPosition.Y - (double) num1), Main.screenWidth + num1 * 2, Main.screenHeight + num1 * 2).Intersects(new Rectangle((int) Position.X, (int) Position.Y, 10, 10)))
        return 6000;
      int num2 = 6000;
      for (int index = 0; index < 6000; ++index)
      {
        Dust dust = Main.dust[index];
        if (!dust.active)
        {
          if ((double) index > (double) Main.maxDustToDraw * 0.9)
          {
            if (Main.rand.Next(4) != 0)
              return 6000;
          }
          else if ((double) index > (double) Main.maxDustToDraw * 0.8)
          {
            if (Main.rand.Next(3) != 0)
              return 6000;
          }
          else if ((double) index > (double) Main.maxDustToDraw * 0.7)
          {
            if (Main.rand.Next(2) == 0)
              return 6000;
          }
          else if ((double) index > (double) Main.maxDustToDraw * 0.6)
          {
            if (Main.rand.Next(4) == 0)
              return 6000;
          }
          else if ((double) index > (double) Main.maxDustToDraw * 0.5)
          {
            if (Main.rand.Next(5) == 0)
              return 6000;
          }
          else
            Dust.dCount = 0.0f;
          int num3 = Width;
          int num4 = Height;
          if (num3 < 5)
            num3 = 5;
          if (num4 < 5)
            num4 = 5;
          num2 = index;
          dust.fadeIn = 0.0f;
          dust.active = true;
          dust.type = Type;
          dust.noGravity = false;
          dust.color = newColor;
          dust.alpha = Alpha;
          dust.position.X = (float) ((double) Position.X + (double) Main.rand.Next(num3 - 4) + 4.0);
          dust.position.Y = (float) ((double) Position.Y + (double) Main.rand.Next(num4 - 4) + 4.0);
          dust.velocity.X = (float) Main.rand.Next(-20, 21) * 0.1f + SpeedX;
          dust.velocity.Y = (float) Main.rand.Next(-20, 21) * 0.1f + SpeedY;
          dust.frame.X = 10 * Type;
          dust.frame.Y = 10 * Main.rand.Next(3);
          dust.shader = (ArmorShaderData) null;
          dust.customData = (object) null;
          dust.noLightEmittence = false;
          int num5 = Type;
          while (num5 >= 100)
          {
            num5 -= 100;
            dust.frame.X -= 1000;
            dust.frame.Y += 30;
          }
          dust.frame.Width = 8;
          dust.frame.Height = 8;
          dust.rotation = 0.0f;
          dust.scale = (float) (1.0 + (double) Main.rand.Next(-20, 21) * 0.00999999977648258);
          dust.scale *= Scale;
          dust.noLight = false;
          dust.firstFrame = true;
          if (dust.type == 228 || dust.type == 279 || dust.type == 269 || dust.type == 135 || dust.type == 6 || dust.type == 242 || dust.type == 75 || dust.type == 169 || dust.type == 29 || dust.type >= 59 && dust.type <= 65 || dust.type == 158 || dust.type == 293 || dust.type == 294 || dust.type == 295 || dust.type == 296 || dust.type == 297 || dust.type == 298 || dust.type == 302)
          {
            dust.velocity.Y = (float) Main.rand.Next(-10, 6) * 0.1f;
            dust.velocity.X *= 0.3f;
            dust.scale *= 0.7f;
          }
          if (dust.type == (int) sbyte.MaxValue || dust.type == 187)
          {
            dust.velocity *= 0.3f;
            dust.scale *= 0.7f;
          }
          if (dust.type == 33 || dust.type == 52 || dust.type == 266 || dust.type == 98 || dust.type == 99 || dust.type == 100 || dust.type == 101 || dust.type == 102 || dust.type == 103 || dust.type == 104 || dust.type == 105)
          {
            dust.alpha = 170;
            dust.velocity *= 0.5f;
            ++dust.velocity.Y;
          }
          if (dust.type == 41)
            dust.velocity *= 0.0f;
          if (dust.type == 80)
            dust.alpha = 50;
          if (dust.type == 34 || dust.type == 35 || dust.type == 152)
          {
            dust.velocity *= 0.1f;
            dust.velocity.Y = -0.5f;
            if (dust.type == 34 && !Collision.WetCollision(new Vector2(dust.position.X, dust.position.Y - 8f), 4, 4))
            {
              dust.active = false;
              break;
            }
            break;
          }
          break;
        }
      }
      return num2;
    }

    public static Dust CloneDust(int dustIndex) => Dust.CloneDust(Main.dust[dustIndex]);

    public static Dust CloneDust(Dust rf)
    {
      if (rf.dustIndex == Main.maxDustToDraw)
        return rf;
      int index = Dust.NewDust(rf.position, 0, 0, rf.type);
      Dust dust = Main.dust[index];
      dust.position = rf.position;
      dust.velocity = rf.velocity;
      dust.fadeIn = rf.fadeIn;
      dust.noGravity = rf.noGravity;
      dust.scale = rf.scale;
      dust.rotation = rf.rotation;
      dust.noLight = rf.noLight;
      dust.active = rf.active;
      dust.type = rf.type;
      dust.color = rf.color;
      dust.alpha = rf.alpha;
      dust.frame = rf.frame;
      dust.shader = rf.shader;
      dust.customData = rf.customData;
      return dust;
    }

    public static Dust QuickDust(int x, int y, Color color) => Dust.QuickDust(new Point(x, y), color);

    public static Dust QuickDust(Point tileCoords, Color color) => Dust.QuickDust(tileCoords.ToWorldCoordinates(), color);

    public static void QuickBox(
      Vector2 topLeft,
      Vector2 bottomRight,
      int divisions,
      Color color,
      Action<Dust> manipulator)
    {
      float num1 = (float) (divisions + 2);
      for (float num2 = 0.0f; (double) num2 <= (double) (divisions + 2); ++num2)
      {
        Dust dust1 = Dust.QuickDust(new Vector2(MathHelper.Lerp(topLeft.X, bottomRight.X, num2 / num1), topLeft.Y), color);
        if (manipulator != null)
          manipulator(dust1);
        Dust dust2 = Dust.QuickDust(new Vector2(MathHelper.Lerp(topLeft.X, bottomRight.X, num2 / num1), bottomRight.Y), color);
        if (manipulator != null)
          manipulator(dust2);
        Dust dust3 = Dust.QuickDust(new Vector2(topLeft.X, MathHelper.Lerp(topLeft.Y, bottomRight.Y, num2 / num1)), color);
        if (manipulator != null)
          manipulator(dust3);
        Dust dust4 = Dust.QuickDust(new Vector2(bottomRight.X, MathHelper.Lerp(topLeft.Y, bottomRight.Y, num2 / num1)), color);
        if (manipulator != null)
          manipulator(dust4);
      }
    }

    public static Dust QuickDust(Vector2 pos, Color color)
    {
      Dust dust = Main.dust[Dust.NewDust(pos, 0, 0, 267)];
      dust.position = pos;
      dust.velocity = Vector2.Zero;
      dust.fadeIn = 1f;
      dust.noLight = true;
      dust.noGravity = true;
      dust.color = color;
      return dust;
    }

    public static Dust QuickDustSmall(Vector2 pos, Color color, bool floorPositionValues = false)
    {
      Dust dust = Dust.QuickDust(pos, color);
      dust.fadeIn = 0.0f;
      dust.scale = 0.35f;
      if (floorPositionValues)
        dust.position = dust.position.Floor();
      return dust;
    }

    public static void QuickDustLine(Vector2 start, Vector2 end, float splits, Color color)
    {
      Dust.QuickDust(start, color).scale = 2f;
      Dust.QuickDust(end, color).scale = 2f;
      float num = 1f / splits;
      for (float amount = 0.0f; (double) amount < 1.0; amount += num)
        Dust.QuickDust(Vector2.Lerp(start, end, amount), color).scale = 2f;
    }

    public static int dustWater()
    {
      switch (Main.waterStyle)
      {
        case 2:
          return 98;
        case 3:
          return 99;
        case 4:
          return 100;
        case 5:
          return 101;
        case 6:
          return 102;
        case 7:
          return 103;
        case 8:
          return 104;
        case 9:
          return 105;
        case 10:
          return 123;
        case 12:
          return 288;
        default:
          return 33;
      }
    }

    public static void UpdateDust()
    {
      int num1 = 0;
      Dust.lavaBubbles = 0;
      Main.snowDust = 0;
      Dust.SandStormCount = 0;
      bool flag = Sandstorm.ShouldSandstormDustPersist();
      for (int index1 = 0; index1 < 6000; ++index1)
      {
        Dust dust = Main.dust[index1];
        if (index1 < Main.maxDustToDraw)
        {
          if (dust.active)
          {
            ++Dust.dCount;
            if ((double) dust.scale > 10.0)
              dust.active = false;
            if (dust.firstFrame && !ChildSafety.Disabled && ChildSafety.DangerousDust(dust.type))
            {
              if (Main.rand.Next(2) == 0)
              {
                dust.firstFrame = false;
                dust.type = 16;
                dust.scale = (float) ((double) Main.rand.NextFloat() * 1.60000002384186 + 0.300000011920929);
                dust.color = Color.Transparent;
                dust.frame.X = 10 * dust.type;
                dust.frame.Y = 10 * Main.rand.Next(3);
                dust.shader = (ArmorShaderData) null;
                dust.customData = (object) null;
                int num2 = dust.type / 100;
                dust.frame.X -= 1000 * num2;
                dust.frame.Y += 30 * num2;
                dust.noGravity = true;
              }
              else
                dust.active = false;
            }
            switch (dust.type)
            {
              case 299:
              case 300:
              case 301:
                dust.scale *= 0.96f;
                dust.velocity.Y -= 0.01f;
                break;
            }
            if (dust.type == 35)
              ++Dust.lavaBubbles;
            dust.position += dust.velocity;
            if (dust.type == 258)
            {
              dust.noGravity = true;
              dust.scale += 0.015f;
            }
            if ((dust.type >= 86 && dust.type <= 92 || dust.type == 286) && !dust.noLight && !dust.noLightEmittence)
            {
              float num3 = dust.scale * 0.6f;
              if ((double) num3 > 1.0)
                num3 = 1f;
              int num4 = dust.type - 85;
              float num5 = num3;
              float num6 = num3;
              float num7 = num3;
              switch (num4)
              {
                case 1:
                  num5 *= 0.9f;
                  num6 *= 0.0f;
                  num7 *= 0.9f;
                  break;
                case 2:
                  num5 *= 0.9f;
                  num6 *= 0.9f;
                  num7 *= 0.0f;
                  break;
                case 3:
                  num5 *= 0.0f;
                  num6 *= 0.1f;
                  num7 *= 1.3f;
                  break;
                case 4:
                  num5 *= 0.0f;
                  num6 *= 1f;
                  num7 *= 0.1f;
                  break;
                case 5:
                  num5 *= 1f;
                  num6 *= 0.1f;
                  num7 *= 0.1f;
                  break;
                case 6:
                  num5 *= 1.3f;
                  num6 *= 1.3f;
                  num7 *= 1.3f;
                  break;
              }
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num3 * num5, num3 * num6, num3 * num7);
            }
            if (dust.type >= 86 && dust.type <= 92 || dust.type == 286)
            {
              if (dust.customData != null && dust.customData is Player)
              {
                Player customData = (Player) dust.customData;
                dust.position += customData.position - customData.oldPosition;
              }
              else if (dust.customData != null && dust.customData is Projectile)
              {
                Projectile customData = (Projectile) dust.customData;
                if (customData.active)
                  dust.position += customData.position - customData.oldPosition;
              }
            }
            if (dust.type == 262 && !dust.noLight)
            {
              Vector3 rgb = new Vector3(0.9f, 0.6f, 0.0f) * dust.scale * 0.6f;
              Lighting.AddLight(dust.position, rgb);
            }
            if (dust.type == 240 && dust.customData != null && dust.customData is Projectile)
            {
              Projectile customData = (Projectile) dust.customData;
              if (customData.active)
                dust.position += customData.position - customData.oldPosition;
            }
            if ((dust.type == 259 || dust.type == 6 || dust.type == 158) && dust.customData != null && dust.customData is int)
            {
              if ((int) dust.customData == 0)
              {
                if (Collision.SolidCollision(dust.position - Vector2.One * 5f, 10, 10) && (double) dust.fadeIn == 0.0)
                {
                  dust.scale *= 0.9f;
                  dust.velocity *= 0.25f;
                }
              }
              else if ((int) dust.customData == 1)
              {
                dust.scale *= 0.98f;
                dust.velocity.Y *= 0.98f;
                if (Collision.SolidCollision(dust.position - Vector2.One * 5f, 10, 10) && (double) dust.fadeIn == 0.0)
                {
                  dust.scale *= 0.9f;
                  dust.velocity *= 0.25f;
                }
              }
            }
            if (dust.type == 263 || dust.type == 264)
            {
              if (!dust.noLight)
              {
                Vector3 rgb = dust.color.ToVector3() * dust.scale * 0.4f;
                Lighting.AddLight(dust.position, rgb);
              }
              if (dust.customData != null && dust.customData is Player)
              {
                Player customData = (Player) dust.customData;
                dust.position += customData.position - customData.oldPosition;
                dust.customData = (object) null;
              }
              else if (dust.customData != null && dust.customData is Projectile)
              {
                Projectile customData = (Projectile) dust.customData;
                dust.position += customData.position - customData.oldPosition;
              }
            }
            if (dust.type == 230)
            {
              float num8 = dust.scale * 0.6f;
              float num9 = num8;
              float num10 = num8;
              float num11 = num8;
              float num12 = num9 * 0.5f;
              float num13 = num10 * 0.9f;
              float num14 = num11 * 1f;
              dust.scale += 0.02f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num8 * num12, num8 * num13, num8 * num14);
              if (dust.customData != null && dust.customData is Player)
              {
                Vector2 center = ((Entity) dust.customData).Center;
                Vector2 vector2_1 = dust.position - center;
                float val2 = vector2_1.Length();
                Vector2 vector2_2 = vector2_1 / val2;
                dust.scale = Math.Min(dust.scale, (float) ((double) val2 / 24.0 - 1.0));
                dust.velocity -= vector2_2 * (100f / Math.Max(50f, val2));
              }
            }
            if (dust.type == 154 || dust.type == 218)
            {
              dust.rotation += dust.velocity.X * 0.3f;
              dust.scale -= 0.03f;
            }
            if (dust.type == 172)
            {
              float num15 = dust.scale * 0.5f;
              if ((double) num15 > 1.0)
                num15 = 1f;
              float num16 = num15;
              float num17 = num15;
              float num18 = num15;
              float num19 = num16 * 0.0f;
              float num20 = num17 * 0.25f;
              float num21 = num18 * 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num15 * num19, num15 * num20, num15 * num21);
            }
            if (dust.type == 182)
            {
              ++dust.rotation;
              if (!dust.noLight)
              {
                float num22 = dust.scale * 0.25f;
                if ((double) num22 > 1.0)
                  num22 = 1f;
                float num23 = num22;
                float num24 = num22;
                float num25 = num22;
                float num26 = num23 * 1f;
                float num27 = num24 * 0.2f;
                float num28 = num25 * 0.1f;
                Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num22 * num26, num22 * num27, num22 * num28);
              }
              if (dust.customData != null && dust.customData is Player)
              {
                Player customData = (Player) dust.customData;
                dust.position += customData.position - customData.oldPosition;
                dust.customData = (object) null;
              }
            }
            if (dust.type == 261)
            {
              if (!dust.noLight && !dust.noLightEmittence)
              {
                float num29 = dust.scale * 0.3f;
                if ((double) num29 > 1.0)
                  num29 = 1f;
                Lighting.AddLight(dust.position, new Vector3(0.4f, 0.6f, 0.7f) * num29);
              }
              if (dust.noGravity)
              {
                dust.velocity *= 0.93f;
                if ((double) dust.fadeIn == 0.0)
                  dust.scale += 1f / 400f;
              }
              dust.velocity *= new Vector2(0.97f, 0.99f);
              dust.scale -= 1f / 400f;
              if (dust.customData != null && dust.customData is Player)
              {
                Player customData = (Player) dust.customData;
                dust.position += customData.position - customData.oldPosition;
              }
            }
            if (dust.type == 254)
            {
              float num30 = dust.scale * 0.35f;
              if ((double) num30 > 1.0)
                num30 = 1f;
              float num31 = num30;
              float num32 = num30;
              float num33 = num30;
              float num34 = num31 * 0.9f;
              float num35 = num32 * 0.1f;
              float num36 = num33 * 0.75f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num30 * num34, num30 * num35, num30 * num36);
            }
            if (dust.type == (int) byte.MaxValue)
            {
              float num37 = dust.scale * 0.25f;
              if ((double) num37 > 1.0)
                num37 = 1f;
              float num38 = num37;
              float num39 = num37;
              float num40 = num37;
              float num41 = num38 * 0.9f;
              float num42 = num39 * 0.1f;
              float num43 = num40 * 0.75f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num37 * num41, num37 * num42, num37 * num43);
            }
            if (dust.type == 211 && dust.noLight && Collision.SolidCollision(dust.position, 4, 4))
              dust.active = false;
            if (dust.type == 284 && Collision.SolidCollision(dust.position - Vector2.One * 4f, 8, 8) && (double) dust.fadeIn == 0.0)
              dust.velocity *= 0.25f;
            if (dust.type == 213 || dust.type == 260)
            {
              dust.rotation = 0.0f;
              float num44 = (float) ((double) dust.scale / 2.5 * 0.200000002980232);
              Vector3 vector3_1 = Vector3.Zero;
              switch (dust.type)
              {
                case 213:
                  vector3_1 = new Vector3((float) byte.MaxValue, 217f, 48f);
                  break;
                case 260:
                  vector3_1 = new Vector3((float) byte.MaxValue, 48f, 48f);
                  break;
              }
              Vector3 vector3_2 = vector3_1 / (float) byte.MaxValue;
              if ((double) num44 > 1.0)
                num44 = 1f;
              Vector3 vector3_3 = vector3_2 * num44;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), vector3_3.X, vector3_3.Y, vector3_3.Z);
            }
            if (dust.type == 157)
            {
              float num45 = dust.scale * 0.2f;
              float num46 = num45;
              float num47 = num45;
              float num48 = num45;
              float num49 = num46 * 0.25f;
              float num50 = num47 * 1f;
              float num51 = num48 * 0.5f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num45 * num49, num45 * num50, num45 * num51);
            }
            if (dust.type == 206)
            {
              dust.scale -= 0.1f;
              float num52 = dust.scale * 0.4f;
              float num53 = num52;
              float num54 = num52;
              float num55 = num52;
              float num56 = num53 * 0.1f;
              float num57 = num54 * 0.6f;
              float num58 = num55 * 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num52 * num56, num52 * num57, num52 * num58);
            }
            if (dust.type == 163)
            {
              float num59 = dust.scale * 0.25f;
              float num60 = num59;
              float num61 = num59;
              float num62 = num59;
              float num63 = num60 * 0.25f;
              float num64 = num61 * 1f;
              float num65 = num62 * 0.05f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num59 * num63, num59 * num64, num59 * num65);
            }
            if (dust.type == 205)
            {
              float num66 = dust.scale * 0.25f;
              float num67 = num66;
              float num68 = num66;
              float num69 = num66;
              float num70 = num67 * 1f;
              float num71 = num68 * 0.05f;
              float num72 = num69 * 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num66 * num70, num66 * num71, num66 * num72);
            }
            if (dust.type == 170)
            {
              float num73 = dust.scale * 0.5f;
              float num74 = num73;
              float num75 = num73;
              float num76 = num73;
              float num77 = num74 * 1f;
              float num78 = num75 * 1f;
              float num79 = num76 * 0.05f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num73 * num77, num73 * num78, num73 * num79);
            }
            if (dust.type == 156)
            {
              float lightAmount = dust.scale * 0.6f;
              int type = dust.type;
              float num80 = lightAmount;
              float num81 = lightAmount;
              float num82 = num80 * 0.9f;
              float num83 = num81 * 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), 12, lightAmount);
            }
            if (dust.type == 234)
            {
              float lightAmount = dust.scale * 0.6f;
              int type = dust.type;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), 13, lightAmount);
            }
            if (dust.type == 175)
              dust.scale -= 0.05f;
            if (dust.type == 174)
            {
              dust.scale -= 0.01f;
              float r = dust.scale * 1f;
              if ((double) r > 0.600000023841858)
                r = 0.6f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), r, r * 0.4f, 0.0f);
            }
            if (dust.type == 235)
            {
              Vector2 vector2 = new Vector2((float) Main.rand.Next(-100, 101), (float) Main.rand.Next(-100, 101));
              vector2.Normalize();
              vector2 *= 15f;
              dust.scale -= 0.01f;
            }
            else if (dust.type == 228 || dust.type == 279 || dust.type == 229 || dust.type == 6 || dust.type == 242 || dust.type == 135 || dust.type == (int) sbyte.MaxValue || dust.type == 187 || dust.type == 75 || dust.type == 169 || dust.type == 29 || dust.type >= 59 && dust.type <= 65 || dust.type == 158 || dust.type == 293 || dust.type == 294 || dust.type == 295 || dust.type == 296 || dust.type == 297 || dust.type == 298 || dust.type == 302)
            {
              if (!dust.noGravity)
                dust.velocity.Y += 0.05f;
              if (dust.type == 229 || dust.type == 228 || dust.type == 279)
              {
                if (dust.customData != null && dust.customData is NPC)
                {
                  NPC customData = (NPC) dust.customData;
                  dust.position += customData.position - customData.oldPos[1];
                }
                else if (dust.customData != null && dust.customData is Player)
                {
                  Player customData = (Player) dust.customData;
                  dust.position += customData.position - customData.oldPosition;
                }
                else if (dust.customData != null && dust.customData is Vector2)
                {
                  Vector2 vector2 = (Vector2) dust.customData - dust.position;
                  if (vector2 != Vector2.Zero)
                    vector2.Normalize();
                  dust.velocity = (dust.velocity * 4f + vector2 * dust.velocity.Length()) / 5f;
                }
              }
              if (!dust.noLight && !dust.noLightEmittence)
              {
                float num84 = dust.scale * 1.4f;
                if (dust.type == 29)
                {
                  if ((double) num84 > 1.0)
                    num84 = 1f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num84 * 0.1f, num84 * 0.4f, num84);
                }
                else if (dust.type == 75)
                {
                  if ((double) num84 > 1.0)
                    num84 = 1f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), 8, num84);
                }
                else if (dust.type == 169)
                {
                  if ((double) num84 > 1.0)
                    num84 = 1f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), 11, num84);
                }
                else if (dust.type == 135)
                {
                  if ((double) num84 > 1.0)
                    num84 = 1f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), 9, num84);
                }
                else if (dust.type == 158)
                {
                  if ((double) num84 > 1.0)
                    num84 = 1f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), 10, num84);
                }
                else if (dust.type == 228)
                {
                  if ((double) num84 > 1.0)
                    num84 = 1f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num84 * 0.7f, num84 * 0.65f, num84 * 0.3f);
                }
                else if (dust.type == 229)
                {
                  if ((double) num84 > 1.0)
                    num84 = 1f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num84 * 0.3f, num84 * 0.65f, num84 * 0.7f);
                }
                else if (dust.type == 242)
                {
                  if ((double) num84 > 1.0)
                    num84 = 1f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), 15, num84);
                }
                else if (dust.type == 293)
                {
                  if ((double) num84 > 1.0)
                    num84 = 1f;
                  float lightAmount = num84 * 0.95f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), 16, lightAmount);
                }
                else if (dust.type == 294)
                {
                  if ((double) num84 > 1.0)
                    num84 = 1f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), 17, num84);
                }
                else if (dust.type >= 59 && dust.type <= 65)
                {
                  if ((double) num84 > 0.800000011920929)
                    num84 = 0.8f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), 1 + dust.type - 59, num84);
                }
                else if (dust.type == (int) sbyte.MaxValue)
                {
                  float r = num84 * 1.3f;
                  if ((double) r > 1.0)
                    r = 1f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), r, r * 0.45f, r * 0.2f);
                }
                else if (dust.type == 187)
                {
                  float b = num84 * 1.3f;
                  if ((double) b > 1.0)
                    b = 1f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), b * 0.2f, b * 0.45f, b);
                }
                else if (dust.type == 295)
                {
                  if ((double) num84 > 1.0)
                    num84 = 1f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), 18, num84);
                }
                else if (dust.type == 296)
                {
                  if ((double) num84 > 1.0)
                    num84 = 1f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), 19, num84);
                }
                else if (dust.type == 297)
                {
                  if ((double) num84 > 1.0)
                    num84 = 1f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), 20, num84);
                }
                else if (dust.type == 298)
                {
                  if ((double) num84 > 1.0)
                    num84 = 1f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), 21, num84);
                }
                else
                {
                  if ((double) num84 > 0.600000023841858)
                    num84 = 0.6f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num84, num84 * 0.65f, num84 * 0.4f);
                }
              }
            }
            else if (dust.type == 269)
            {
              if (!dust.noLight)
              {
                float num85 = dust.scale * 1.4f;
                if ((double) num85 > 1.0)
                  num85 = 1f;
                Vector3 vector3 = new Vector3(0.7f, 0.65f, 0.3f);
                Lighting.AddLight(dust.position, vector3 * num85);
              }
              if (dust.customData != null && dust.customData is Vector2)
              {
                Vector2 vector2 = (Vector2) dust.customData - dust.position;
                dust.velocity.X += 1f * (float) Math.Sign(vector2.X) * dust.scale;
              }
            }
            else if (dust.type == 159)
            {
              float num86 = dust.scale * 1.3f;
              if ((double) num86 > 1.0)
                num86 = 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num86, num86, num86 * 0.1f);
              if (dust.noGravity)
              {
                if ((double) dust.scale < 0.699999988079071)
                  dust.velocity *= 1.075f;
                else if (Main.rand.Next(2) == 0)
                  dust.velocity *= -0.95f;
                else
                  dust.velocity *= 1.05f;
                dust.scale -= 0.03f;
              }
              else
              {
                dust.scale += 0.005f;
                dust.velocity *= 0.9f;
                dust.velocity.X += (float) Main.rand.Next(-10, 11) * 0.02f;
                dust.velocity.Y += (float) Main.rand.Next(-10, 11) * 0.02f;
                if (Main.rand.Next(5) == 0)
                {
                  int index2 = Dust.NewDust(dust.position, 4, 4, dust.type);
                  Main.dust[index2].noGravity = true;
                  Main.dust[index2].scale = dust.scale * 2.5f;
                }
              }
            }
            else if (dust.type == 164)
            {
              float r = dust.scale;
              if ((double) r > 1.0)
                r = 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), r, r * 0.1f, r * 0.8f);
              if (dust.noGravity)
              {
                if ((double) dust.scale < 0.699999988079071)
                  dust.velocity *= 1.075f;
                else if (Main.rand.Next(2) == 0)
                  dust.velocity *= -0.95f;
                else
                  dust.velocity *= 1.05f;
                dust.scale -= 0.03f;
              }
              else
              {
                dust.scale -= 0.005f;
                dust.velocity *= 0.9f;
                dust.velocity.X += (float) Main.rand.Next(-10, 11) * 0.02f;
                dust.velocity.Y += (float) Main.rand.Next(-10, 11) * 0.02f;
                if (Main.rand.Next(5) == 0)
                {
                  int index3 = Dust.NewDust(dust.position, 4, 4, dust.type);
                  Main.dust[index3].noGravity = true;
                  Main.dust[index3].scale = dust.scale * 2.5f;
                }
              }
            }
            else if (dust.type == 173)
            {
              float b = dust.scale;
              if ((double) b > 1.0)
                b = 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), b * 0.4f, b * 0.1f, b);
              if (dust.noGravity)
              {
                dust.velocity *= 0.8f;
                dust.velocity.X += (float) Main.rand.Next(-20, 21) * 0.01f;
                dust.velocity.Y += (float) Main.rand.Next(-20, 21) * 0.01f;
                dust.scale -= 0.01f;
              }
              else
              {
                dust.scale -= 0.015f;
                dust.velocity *= 0.8f;
                dust.velocity.X += (float) Main.rand.Next(-10, 11) * 0.005f;
                dust.velocity.Y += (float) Main.rand.Next(-10, 11) * 0.005f;
                if (Main.rand.Next(10) == 10)
                {
                  int index4 = Dust.NewDust(dust.position, 4, 4, dust.type);
                  Main.dust[index4].noGravity = true;
                  Main.dust[index4].scale = dust.scale;
                }
              }
            }
            else if (dust.type == 184)
            {
              if (!dust.noGravity)
              {
                dust.velocity *= 0.0f;
                dust.scale -= 0.01f;
              }
            }
            else if (dust.type == 160 || dust.type == 162)
            {
              float num87 = dust.scale * 1.3f;
              if ((double) num87 > 1.0)
                num87 = 1f;
              if (dust.type == 162)
                Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num87, num87 * 0.7f, num87 * 0.1f);
              else
                Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num87 * 0.1f, num87, num87);
              if (dust.noGravity)
              {
                dust.velocity *= 0.8f;
                dust.velocity.X += (float) Main.rand.Next(-20, 21) * 0.04f;
                dust.velocity.Y += (float) Main.rand.Next(-20, 21) * 0.04f;
                dust.scale -= 0.1f;
              }
              else
              {
                dust.scale -= 0.1f;
                dust.velocity.X += (float) Main.rand.Next(-10, 11) * 0.02f;
                dust.velocity.Y += (float) Main.rand.Next(-10, 11) * 0.02f;
                if ((double) dust.scale > 0.3 && Main.rand.Next(50) == 0)
                {
                  int index5 = Dust.NewDust(new Vector2(dust.position.X - 4f, dust.position.Y - 4f), 1, 1, dust.type);
                  Main.dust[index5].noGravity = true;
                  Main.dust[index5].scale = dust.scale * 1.5f;
                }
              }
            }
            else if (dust.type == 168)
            {
              float r = dust.scale * 0.8f;
              if ((double) r > 0.55)
                r = 0.55f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), r, 0.0f, r * 0.8f);
              dust.scale += 0.03f;
              dust.velocity.X += (float) Main.rand.Next(-10, 11) * 0.02f;
              dust.velocity.Y += (float) Main.rand.Next(-10, 11) * 0.02f;
              dust.velocity *= 0.99f;
            }
            else if (dust.type >= 139 && dust.type < 143)
            {
              dust.velocity.X *= 0.98f;
              dust.velocity.Y *= 0.98f;
              if ((double) dust.velocity.Y < 1.0)
                dust.velocity.Y += 0.05f;
              dust.scale += 0.009f;
              dust.rotation -= dust.velocity.X * 0.4f;
              if ((double) dust.velocity.X > 0.0)
                dust.rotation += 0.005f;
              else
                dust.rotation -= 0.005f;
            }
            else if (dust.type == 14 || dust.type == 16 || dust.type == 31 || dust.type == 46 || dust.type == 124 || dust.type == 186 || dust.type == 188 || dust.type == 303)
            {
              dust.velocity.Y *= 0.98f;
              dust.velocity.X *= 0.98f;
              if (dust.type == 31)
              {
                if (dust.customData != null && dust.customData is NPC)
                {
                  NPC customData = (NPC) dust.customData;
                  dust.position += customData.position - customData.oldPosition;
                  if (dust.noGravity)
                    dust.velocity *= 1.02f;
                  dust.alpha -= 70;
                  if (dust.alpha < 0)
                    dust.alpha = 0;
                  dust.scale *= 0.97f;
                  if ((double) dust.scale <= 0.00999999977648258)
                  {
                    dust.scale = 0.0001f;
                    dust.alpha = (int) byte.MaxValue;
                  }
                }
                else if (dust.noGravity)
                {
                  dust.velocity *= 1.02f;
                  dust.scale += 0.02f;
                  dust.alpha += 4;
                  if (dust.alpha > (int) byte.MaxValue)
                  {
                    dust.scale = 0.0001f;
                    dust.alpha = (int) byte.MaxValue;
                  }
                }
              }
              if (dust.type == 303 && dust.noGravity)
              {
                dust.velocity *= 1.02f;
                dust.scale += 0.03f;
                if (dust.alpha < 90)
                  dust.alpha = 90;
                dust.alpha += 4;
                if (dust.alpha > (int) byte.MaxValue)
                {
                  dust.scale = 0.0001f;
                  dust.alpha = (int) byte.MaxValue;
                }
              }
            }
            else if (dust.type == 32)
            {
              dust.scale -= 0.01f;
              dust.velocity.X *= 0.96f;
              if (!dust.noGravity)
                dust.velocity.Y += 0.1f;
            }
            else if (dust.type >= 244 && dust.type <= 247)
            {
              dust.rotation += 0.1f * dust.scale;
              Color color = Lighting.GetColor((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0));
              int num88;
              float num89 = (float) (((double) (num88 = (int) (byte) (((int) color.R + (int) color.G + (int) color.B) / 3)) / 270.0 + 1.0) / 2.0);
              float num90 = (float) (((double) num88 / 270.0 + 1.0) / 2.0);
              float num91 = (float) (((double) num88 / 270.0 + 1.0) / 2.0);
              float num92 = num89 * (dust.scale * 0.9f);
              float num93 = num90 * (dust.scale * 0.9f);
              float num94 = num91 * (dust.scale * 0.9f);
              if (dust.alpha < (int) byte.MaxValue)
              {
                dust.scale += 0.09f;
                if ((double) dust.scale >= 1.0)
                {
                  dust.scale = 1f;
                  dust.alpha = (int) byte.MaxValue;
                }
              }
              else
              {
                if ((double) dust.scale < 0.8)
                  dust.scale -= 0.01f;
                if ((double) dust.scale < 0.5)
                  dust.scale -= 0.01f;
              }
              float num95 = 1f;
              if (dust.type == 244)
              {
                num92 *= 0.8862745f;
                num93 *= 0.4627451f;
                num94 *= 0.2980392f;
                num95 = 0.9f;
              }
              else if (dust.type == 245)
              {
                num92 *= 0.5137255f;
                num93 *= 0.6745098f;
                num94 *= 0.6784314f;
                num95 = 1f;
              }
              else if (dust.type == 246)
              {
                num92 *= 0.8f;
                num93 *= 0.7098039f;
                num94 *= 0.282353f;
                num95 = 1.1f;
              }
              else if (dust.type == 247)
              {
                num92 *= 0.6f;
                num93 *= 0.6745098f;
                num94 *= 0.7254902f;
                num95 = 1.2f;
              }
              float r = num92 * num95;
              float g = num93 * num95;
              float b = num94 * num95;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), r, g, b);
            }
            else if (dust.type == 43)
            {
              dust.rotation += 0.1f * dust.scale;
              Color color = Lighting.GetColor((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0));
              float num96 = (float) color.R / 270f;
              float num97 = (float) color.G / 270f;
              float num98 = (float) color.B / 270f;
              float num99 = (float) dust.color.R / (float) byte.MaxValue;
              float num100 = (float) dust.color.G / (float) byte.MaxValue;
              float num101 = (float) dust.color.B / (float) byte.MaxValue;
              float r = num96 * (dust.scale * 1.07f * num99);
              float g = num97 * (dust.scale * 1.07f * num100);
              float b = num98 * (dust.scale * 1.07f * num101);
              if (dust.alpha < (int) byte.MaxValue)
              {
                dust.scale += 0.09f;
                if ((double) dust.scale >= 1.0)
                {
                  dust.scale = 1f;
                  dust.alpha = (int) byte.MaxValue;
                }
              }
              else
              {
                if ((double) dust.scale < 0.8)
                  dust.scale -= 0.01f;
                if ((double) dust.scale < 0.5)
                  dust.scale -= 0.01f;
              }
              if ((double) r < 0.05 && (double) g < 0.05 && (double) b < 0.05)
                dust.active = false;
              else if (!dust.noLightEmittence)
                Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), r, g, b);
              if (dust.customData != null && dust.customData is Player)
              {
                Player customData = (Player) dust.customData;
                dust.position += customData.position - customData.oldPosition;
              }
            }
            else if (dust.type == 15 || dust.type == 57 || dust.type == 58 || dust.type == 274 || dust.type == 292)
            {
              dust.velocity.Y *= 0.98f;
              dust.velocity.X *= 0.98f;
              if (!dust.noLightEmittence)
              {
                float num102 = dust.scale;
                if (dust.type != 15)
                  num102 = dust.scale * 0.8f;
                if (dust.noLight)
                  dust.velocity *= 0.95f;
                if ((double) num102 > 1.0)
                  num102 = 1f;
                if (dust.type == 15)
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num102 * 0.45f, num102 * 0.55f, num102);
                else if (dust.type == 57)
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num102 * 0.95f, num102 * 0.95f, num102 * 0.45f);
                else if (dust.type == 58)
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num102, num102 * 0.55f, num102 * 0.75f);
              }
            }
            else if (dust.type == 204)
            {
              if ((double) dust.fadeIn > (double) dust.scale)
                dust.scale += 0.02f;
              else
                dust.scale -= 0.02f;
              dust.velocity *= 0.95f;
            }
            else if (dust.type == 110)
            {
              float g = dust.scale * 0.1f;
              if ((double) g > 1.0)
                g = 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), g * 0.2f, g, g * 0.5f);
            }
            else if (dust.type == 111)
            {
              float b = dust.scale * 0.125f;
              if ((double) b > 1.0)
                b = 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), b * 0.2f, b * 0.7f, b);
            }
            else if (dust.type == 112)
            {
              float num103 = dust.scale * 0.1f;
              if ((double) num103 > 1.0)
                num103 = 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num103 * 0.8f, num103 * 0.2f, num103 * 0.8f);
            }
            else if (dust.type == 113)
            {
              float num104 = dust.scale * 0.1f;
              if ((double) num104 > 1.0)
                num104 = 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num104 * 0.2f, num104 * 0.3f, num104 * 1.3f);
            }
            else if (dust.type == 114)
            {
              float num105 = dust.scale * 0.1f;
              if ((double) num105 > 1.0)
                num105 = 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num105 * 1.2f, num105 * 0.5f, num105 * 0.4f);
            }
            else if (dust.type == 66)
            {
              if ((double) dust.velocity.X < 0.0)
                --dust.rotation;
              else
                ++dust.rotation;
              dust.velocity.Y *= 0.98f;
              dust.velocity.X *= 0.98f;
              dust.scale += 0.02f;
              float num106 = dust.scale;
              if (dust.type != 15)
                num106 = dust.scale * 0.8f;
              if ((double) num106 > 1.0)
                num106 = 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num106 * ((float) dust.color.R / (float) byte.MaxValue), num106 * ((float) dust.color.G / (float) byte.MaxValue), num106 * ((float) dust.color.B / (float) byte.MaxValue));
            }
            else if (dust.type == 267)
            {
              if ((double) dust.velocity.X < 0.0)
                --dust.rotation;
              else
                ++dust.rotation;
              dust.velocity.Y *= 0.98f;
              dust.velocity.X *= 0.98f;
              dust.scale += 0.02f;
              float num107 = dust.scale * 0.8f;
              if ((double) num107 > 1.0)
                num107 = 1f;
              if (dust.noLight)
                dust.noLight = false;
              if (!dust.noLight && !dust.noLightEmittence)
                Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num107 * ((float) dust.color.R / (float) byte.MaxValue), num107 * ((float) dust.color.G / (float) byte.MaxValue), num107 * ((float) dust.color.B / (float) byte.MaxValue));
            }
            else if (dust.type == 20 || dust.type == 21 || dust.type == 231)
            {
              dust.scale += 0.005f;
              dust.velocity.Y *= 0.94f;
              dust.velocity.X *= 0.94f;
              float b1 = dust.scale * 0.8f;
              if ((double) b1 > 1.0)
                b1 = 1f;
              if (dust.type == 21 && !dust.noLightEmittence)
              {
                float b2 = dust.scale * 0.4f;
                Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), b2 * 0.8f, b2 * 0.3f, b2);
              }
              else if (dust.type == 231)
              {
                float r = dust.scale * 0.4f;
                Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), r, r * 0.5f, r * 0.3f);
              }
              else
                Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), b1 * 0.3f, b1 * 0.6f, b1);
            }
            else if (dust.type == 27 || dust.type == 45)
            {
              if (dust.type == 27 && (double) dust.fadeIn >= 100.0)
              {
                if ((double) dust.scale >= 1.5)
                  dust.scale -= 0.01f;
                else
                  dust.scale -= 0.05f;
                if ((double) dust.scale <= 0.5)
                  dust.scale -= 0.05f;
                if ((double) dust.scale <= 0.25)
                  dust.scale -= 0.05f;
              }
              dust.velocity *= 0.94f;
              dust.scale += 1f / 500f;
              float b = dust.scale;
              if (dust.noLight)
              {
                b *= 0.1f;
                dust.scale -= 0.06f;
                if ((double) dust.scale < 1.0)
                  dust.scale -= 0.06f;
                if (Main.player[Main.myPlayer].wet)
                  dust.position += Main.player[Main.myPlayer].velocity * 0.5f;
                else
                  dust.position += Main.player[Main.myPlayer].velocity;
              }
              if ((double) b > 1.0)
                b = 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), b * 0.6f, b * 0.2f, b);
            }
            else if (dust.type == 55 || dust.type == 56 || dust.type == 73 || dust.type == 74)
            {
              dust.velocity *= 0.98f;
              if (!dust.noLightEmittence)
              {
                float num108 = dust.scale * 0.8f;
                if (dust.type == 55)
                {
                  if ((double) num108 > 1.0)
                    num108 = 1f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num108, num108, num108 * 0.6f);
                }
                else if (dust.type == 73)
                {
                  if ((double) num108 > 1.0)
                    num108 = 1f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num108, num108 * 0.35f, num108 * 0.5f);
                }
                else if (dust.type == 74)
                {
                  if ((double) num108 > 1.0)
                    num108 = 1f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num108 * 0.35f, num108, num108 * 0.5f);
                }
                else
                {
                  float b = dust.scale * 1.2f;
                  if ((double) b > 1.0)
                    b = 1f;
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), b * 0.35f, b * 0.5f, b);
                }
              }
            }
            else if (dust.type == 71 || dust.type == 72)
            {
              dust.velocity *= 0.98f;
              float num109 = dust.scale;
              if ((double) num109 > 1.0)
                num109 = 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num109 * 0.2f, 0.0f, num109 * 0.1f);
            }
            else if (dust.type == 76)
            {
              ++Main.snowDust;
              dust.scale += 0.009f;
              float y = Main.player[Main.myPlayer].velocity.Y;
              if ((double) y > 0.0 && (double) dust.fadeIn == 0.0 && (double) dust.velocity.Y < (double) y)
                dust.velocity.Y = MathHelper.Lerp(dust.velocity.Y, y, 0.04f);
              if (!dust.noLight && (double) y > 0.0)
                dust.position.Y += Main.player[Main.myPlayer].velocity.Y * 0.2f;
              if (Collision.SolidCollision(dust.position - Vector2.One * 5f, 10, 10) && (double) dust.fadeIn == 0.0)
              {
                dust.scale *= 0.9f;
                dust.velocity *= 0.25f;
              }
            }
            else if (dust.type == 270)
            {
              dust.velocity *= 1.005025f;
              dust.scale += 0.01f;
              dust.rotation = 0.0f;
              if (Collision.SolidCollision(dust.position - Vector2.One * 5f, 10, 10) && (double) dust.fadeIn == 0.0)
              {
                dust.scale *= 0.95f;
                dust.velocity *= 0.25f;
              }
              else
              {
                dust.velocity.Y = (float) Math.Sin((double) dust.position.X * 0.0043982295319438) * 2f;
                dust.velocity.Y -= 3f;
                dust.velocity.Y /= 20f;
              }
            }
            else if (dust.type == 271)
            {
              dust.velocity *= 1.005025f;
              dust.scale += 3f / 1000f;
              dust.rotation = 0.0f;
              dust.velocity.Y -= 4f;
              dust.velocity.Y /= 6f;
            }
            else if (dust.type == 268)
            {
              ++Dust.SandStormCount;
              dust.velocity *= 1.005025f;
              dust.scale += 0.01f;
              if (!flag)
                dust.scale -= 0.05f;
              dust.rotation = 0.0f;
              float y = Main.player[Main.myPlayer].velocity.Y;
              if ((double) y > 0.0 && (double) dust.fadeIn == 0.0 && (double) dust.velocity.Y < (double) y)
                dust.velocity.Y = MathHelper.Lerp(dust.velocity.Y, y, 0.04f);
              if (!dust.noLight && (double) y > 0.0)
                dust.position.Y += y * 0.2f;
              if (Collision.SolidCollision(dust.position - Vector2.One * 5f, 10, 10) && (double) dust.fadeIn == 0.0)
              {
                dust.scale *= 0.9f;
                dust.velocity *= 0.25f;
              }
              else
              {
                dust.velocity.Y = (float) Math.Sin((double) dust.position.X * 0.0043982295319438) * 2f;
                dust.velocity.Y += 3f;
              }
            }
            else if (!dust.noGravity && dust.type != 41 && dust.type != 44)
            {
              if (dust.type == 107)
                dust.velocity *= 0.9f;
              else
                dust.velocity.Y += 0.1f;
            }
            if (dust.type == 5 || dust.type == 273 && dust.noGravity)
              dust.scale -= 0.04f;
            if (dust.type == 33 || dust.type == 52 || dust.type == 266 || dust.type == 98 || dust.type == 99 || dust.type == 100 || dust.type == 101 || dust.type == 102 || dust.type == 103 || dust.type == 104 || dust.type == 105 || dust.type == 123 || dust.type == 288)
            {
              if ((double) dust.velocity.X == 0.0)
              {
                if (Collision.SolidCollision(dust.position, 2, 2))
                  dust.scale = 0.0f;
                dust.rotation += 0.5f;
                dust.scale -= 0.01f;
              }
              if (Collision.WetCollision(new Vector2(dust.position.X, dust.position.Y), 4, 4))
              {
                dust.alpha += 20;
                dust.scale -= 0.1f;
              }
              dust.alpha += 2;
              dust.scale -= 0.005f;
              if (dust.alpha > (int) byte.MaxValue)
                dust.scale = 0.0f;
              if ((double) dust.velocity.Y > 4.0)
                dust.velocity.Y = 4f;
              if (dust.noGravity)
              {
                if ((double) dust.velocity.X < 0.0)
                  dust.rotation -= 0.2f;
                else
                  dust.rotation += 0.2f;
                dust.scale += 0.03f;
                dust.velocity.X *= 1.05f;
                dust.velocity.Y += 0.15f;
              }
            }
            if (dust.type == 35 && dust.noGravity)
            {
              dust.scale += 0.03f;
              if ((double) dust.scale < 1.0)
                dust.velocity.Y += 0.075f;
              dust.velocity.X *= 1.08f;
              if ((double) dust.velocity.X > 0.0)
                dust.rotation += 0.01f;
              else
                dust.rotation -= 0.01f;
              float r = dust.scale * 0.6f;
              if ((double) r > 1.0)
                r = 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0 + 1.0), r, r * 0.3f, r * 0.1f);
            }
            else if (dust.type == 152 && dust.noGravity)
            {
              dust.scale += 0.03f;
              if ((double) dust.scale < 1.0)
                dust.velocity.Y += 0.075f;
              dust.velocity.X *= 1.08f;
              if ((double) dust.velocity.X > 0.0)
                dust.rotation += 0.01f;
              else
                dust.rotation -= 0.01f;
            }
            else if (dust.type == 67 || dust.type == 92)
            {
              float b = dust.scale;
              if ((double) b > 1.0)
                b = 1f;
              if (dust.noLight)
                b *= 0.1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), 0.0f, b * 0.8f, b);
            }
            else if (dust.type == 185)
            {
              float b = dust.scale;
              if ((double) b > 1.0)
                b = 1f;
              if (dust.noLight)
                b *= 0.1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), b * 0.1f, b * 0.7f, b);
            }
            else if (dust.type == 107)
            {
              float g = dust.scale * 0.5f;
              if ((double) g > 1.0)
                g = 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), g * 0.1f, g, g * 0.4f);
            }
            else if (dust.type == 34 || dust.type == 35 || dust.type == 152)
            {
              if (!Collision.WetCollision(new Vector2(dust.position.X, dust.position.Y - 8f), 4, 4))
              {
                dust.scale = 0.0f;
              }
              else
              {
                dust.alpha += Main.rand.Next(2);
                if (dust.alpha > (int) byte.MaxValue)
                  dust.scale = 0.0f;
                dust.velocity.Y = -0.5f;
                if (dust.type == 34)
                {
                  dust.scale += 0.005f;
                }
                else
                {
                  ++dust.alpha;
                  dust.scale -= 0.01f;
                  dust.velocity.Y = -0.2f;
                }
                dust.velocity.X += (float) Main.rand.Next(-10, 10) * (1f / 500f);
                if ((double) dust.velocity.X < -0.25)
                  dust.velocity.X = -0.25f;
                if ((double) dust.velocity.X > 0.25)
                  dust.velocity.X = 0.25f;
              }
              if (dust.type == 35)
              {
                float r = (float) ((double) dust.scale * 0.300000011920929 + 0.400000005960464);
                if ((double) r > 1.0)
                  r = 1f;
                Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), r, r * 0.5f, r * 0.3f);
              }
            }
            if (dust.type == 68)
            {
              float b = dust.scale * 0.3f;
              if ((double) b > 1.0)
                b = 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), b * 0.1f, b * 0.2f, b);
            }
            if (dust.type == 70)
            {
              float b = dust.scale * 0.3f;
              if ((double) b > 1.0)
                b = 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), b * 0.5f, 0.0f, b);
            }
            if (dust.type == 41)
            {
              dust.velocity.X += (float) Main.rand.Next(-10, 11) * 0.01f;
              dust.velocity.Y += (float) Main.rand.Next(-10, 11) * 0.01f;
              if ((double) dust.velocity.X > 0.75)
                dust.velocity.X = 0.75f;
              if ((double) dust.velocity.X < -0.75)
                dust.velocity.X = -0.75f;
              if ((double) dust.velocity.Y > 0.75)
                dust.velocity.Y = 0.75f;
              if ((double) dust.velocity.Y < -0.75)
                dust.velocity.Y = -0.75f;
              dust.scale += 0.007f;
              float b = dust.scale * 0.7f;
              if ((double) b > 1.0)
                b = 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), b * 0.4f, b * 0.9f, b);
            }
            else if (dust.type == 44)
            {
              dust.velocity.X += (float) Main.rand.Next(-10, 11) * (3f / 1000f);
              dust.velocity.Y += (float) Main.rand.Next(-10, 11) * (3f / 1000f);
              if ((double) dust.velocity.X > 0.35)
                dust.velocity.X = 0.35f;
              if ((double) dust.velocity.X < -0.35)
                dust.velocity.X = -0.35f;
              if ((double) dust.velocity.Y > 0.35)
                dust.velocity.Y = 0.35f;
              if ((double) dust.velocity.Y < -0.35)
                dust.velocity.Y = -0.35f;
              dust.scale += 0.0085f;
              float g = dust.scale * 0.7f;
              if ((double) g > 1.0)
                g = 1f;
              Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), g * 0.7f, g, g * 0.8f);
            }
            else
              dust.velocity.X *= 0.99f;
            if (dust.type != 79 && dust.type != 268)
              dust.rotation += dust.velocity.X * 0.5f;
            if ((double) dust.fadeIn > 0.0 && (double) dust.fadeIn < 100.0)
            {
              if (dust.type == 235)
              {
                dust.scale += 0.007f;
                int index6 = (int) dust.fadeIn - 1;
                if (index6 >= 0 && index6 <= (int) byte.MaxValue)
                {
                  Vector2 vector2_3 = dust.position - Main.player[index6].Center;
                  float num110 = 100f - vector2_3.Length();
                  if ((double) num110 > 0.0)
                    dust.scale -= num110 * 0.0015f;
                  vector2_3.Normalize();
                  float num111 = (float) ((1.0 - (double) dust.scale) * 20.0);
                  Vector2 vector2_4 = vector2_3 * -num111;
                  dust.velocity = (dust.velocity * 4f + vector2_4) / 5f;
                }
              }
              else if (dust.type == 46)
                dust.scale += 0.1f;
              else if (dust.type == 213 || dust.type == 260)
                dust.scale += 0.1f;
              else
                dust.scale += 0.03f;
              if ((double) dust.scale > (double) dust.fadeIn)
                dust.fadeIn = 0.0f;
            }
            else if (dust.type == 213 || dust.type == 260)
              dust.scale -= 0.2f;
            else
              dust.scale -= 0.01f;
            if (dust.type >= 130 && dust.type <= 134)
            {
              float num112 = dust.scale;
              if ((double) num112 > 1.0)
                num112 = 1f;
              if (dust.type == 130)
                Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num112 * 1f, num112 * 0.5f, num112 * 0.4f);
              if (dust.type == 131)
                Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num112 * 0.4f, num112 * 1f, num112 * 0.6f);
              if (dust.type == 132)
                Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num112 * 0.3f, num112 * 0.5f, num112 * 1f);
              if (dust.type == 133)
                Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num112 * 0.9f, num112 * 0.9f, num112 * 0.3f);
              if (dust.noGravity)
              {
                dust.velocity *= 0.93f;
                if ((double) dust.fadeIn == 0.0)
                  dust.scale += 1f / 400f;
              }
              else if (dust.type == 131)
              {
                dust.velocity *= 0.98f;
                dust.velocity.Y -= 0.1f;
                dust.scale += 1f / 400f;
              }
              else
              {
                dust.velocity *= 0.95f;
                dust.scale -= 1f / 400f;
              }
            }
            else if (dust.type == 278)
            {
              float num113 = dust.scale;
              if ((double) num113 > 1.0)
                num113 = 1f;
              if (!dust.noLight)
                Lighting.AddLight(dust.position, dust.color.ToVector3() * num113);
              if (dust.noGravity)
              {
                dust.velocity *= 0.93f;
                if ((double) dust.fadeIn == 0.0)
                  dust.scale += 1f / 400f;
              }
              else
              {
                dust.velocity *= 0.95f;
                dust.scale -= 1f / 400f;
              }
              if (WorldGen.SolidTile(Framing.GetTileSafely(dust.position)) && (double) dust.fadeIn == 0.0 && !dust.noGravity)
              {
                dust.scale *= 0.9f;
                dust.velocity *= 0.25f;
              }
            }
            else if (dust.type >= 219 && dust.type <= 223)
            {
              float num114 = dust.scale;
              if ((double) num114 > 1.0)
                num114 = 1f;
              if (!dust.noLight)
              {
                if (dust.type == 219)
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num114 * 1f, num114 * 0.5f, num114 * 0.4f);
                if (dust.type == 220)
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num114 * 0.4f, num114 * 1f, num114 * 0.6f);
                if (dust.type == 221)
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num114 * 0.3f, num114 * 0.5f, num114 * 1f);
                if (dust.type == 222)
                  Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num114 * 0.9f, num114 * 0.9f, num114 * 0.3f);
              }
              if (dust.noGravity)
              {
                dust.velocity *= 0.93f;
                if ((double) dust.fadeIn == 0.0)
                  dust.scale += 1f / 400f;
              }
              dust.velocity *= new Vector2(0.97f, 0.99f);
              dust.scale -= 1f / 400f;
              if (dust.customData != null && dust.customData is Player)
              {
                Player customData = (Player) dust.customData;
                dust.position += customData.position - customData.oldPosition;
              }
            }
            else if (dust.type == 226)
            {
              float num115 = dust.scale;
              if ((double) num115 > 1.0)
                num115 = 1f;
              if (!dust.noLight)
                Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num115 * 0.2f, num115 * 0.7f, num115 * 1f);
              if (dust.noGravity)
              {
                dust.velocity *= 0.93f;
                if ((double) dust.fadeIn == 0.0)
                  dust.scale += 1f / 400f;
              }
              dust.velocity *= new Vector2(0.97f, 0.99f);
              if (dust.customData != null && dust.customData is Player)
              {
                Player customData = (Player) dust.customData;
                dust.position += customData.position - customData.oldPosition;
              }
              dust.scale -= 0.01f;
            }
            else if (dust.type == 272)
            {
              float num116 = dust.scale;
              if ((double) num116 > 1.0)
                num116 = 1f;
              if (!dust.noLight)
                Lighting.AddLight((int) ((double) dust.position.X / 16.0), (int) ((double) dust.position.Y / 16.0), num116 * 0.5f, num116 * 0.2f, num116 * 0.8f);
              if (dust.noGravity)
              {
                dust.velocity *= 0.93f;
                if ((double) dust.fadeIn == 0.0)
                  dust.scale += 1f / 400f;
              }
              dust.velocity *= new Vector2(0.97f, 0.99f);
              if (dust.customData != null && dust.customData is Player)
              {
                Player customData = (Player) dust.customData;
                dust.position += customData.position - customData.oldPosition;
              }
              if (dust.customData != null && dust.customData is NPC)
              {
                NPC customData = (NPC) dust.customData;
                dust.position += customData.position - customData.oldPosition;
              }
              dust.scale -= 0.01f;
            }
            else if (dust.noGravity)
            {
              dust.velocity *= 0.92f;
              if ((double) dust.fadeIn == 0.0)
                dust.scale -= 0.04f;
            }
            if ((double) dust.position.Y > (double) Main.screenPosition.Y + (double) Main.screenHeight)
              dust.active = false;
            float num117 = 0.1f;
            if ((double) Dust.dCount == 0.5)
              dust.scale -= 1f / 1000f;
            if ((double) Dust.dCount == 0.6)
              dust.scale -= 1f / 400f;
            if ((double) Dust.dCount == 0.7)
              dust.scale -= 0.005f;
            if ((double) Dust.dCount == 0.8)
              dust.scale -= 0.01f;
            if ((double) Dust.dCount == 0.9)
              dust.scale -= 0.02f;
            if ((double) Dust.dCount == 0.5)
              num117 = 0.11f;
            if ((double) Dust.dCount == 0.6)
              num117 = 0.13f;
            if ((double) Dust.dCount == 0.7)
              num117 = 0.16f;
            if ((double) Dust.dCount == 0.8)
              num117 = 0.22f;
            if ((double) Dust.dCount == 0.9)
              num117 = 0.25f;
            if ((double) dust.scale < (double) num117)
              dust.active = false;
          }
        }
        else
          dust.active = false;
      }
      int num118 = num1;
      if ((double) num118 > (double) Main.maxDustToDraw * 0.9)
        Dust.dCount = 0.9f;
      else if ((double) num118 > (double) Main.maxDustToDraw * 0.8)
        Dust.dCount = 0.8f;
      else if ((double) num118 > (double) Main.maxDustToDraw * 0.7)
        Dust.dCount = 0.7f;
      else if ((double) num118 > (double) Main.maxDustToDraw * 0.6)
        Dust.dCount = 0.6f;
      else if ((double) num118 > (double) Main.maxDustToDraw * 0.5)
        Dust.dCount = 0.5f;
      else
        Dust.dCount = 0.0f;
    }

    public Color GetAlpha(Color newColor)
    {
      float num1 = (float) ((int) byte.MaxValue - this.alpha) / (float) byte.MaxValue;
      switch (this.type)
      {
        case 299:
        case 300:
        case 301:
          Color color = new Color();
          switch (this.type)
          {
            case 299:
              color = new Color(50, (int) byte.MaxValue, 50, 200);
              break;
            case 300:
              color = new Color(50, 200, (int) byte.MaxValue, (int) byte.MaxValue);
              break;
            case 301:
              color = new Color((int) byte.MaxValue, 50, 125, 200);
              break;
            default:
              color = new Color((int) byte.MaxValue, 150, 150, 200);
              break;
          }
          return color;
        default:
          if (this.type == 292)
            return Color.White;
          if (this.type == 259)
            return new Color(230, 230, 230, 230);
          if (this.type == 261)
            return new Color(230, 230, 230, 115);
          if (this.type == 254 || this.type == (int) byte.MaxValue)
            return new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0);
          if (this.type == 258)
            return new Color(150, 50, 50, 0);
          if (this.type == 263 || this.type == 264)
            return new Color((int) this.color.R / 2 + (int) sbyte.MaxValue, (int) this.color.G + (int) sbyte.MaxValue, (int) this.color.B + (int) sbyte.MaxValue, (int) this.color.A / 8) * 0.5f;
          if (this.type == 235)
            return new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0);
          if ((this.type >= 86 && this.type <= 91 || this.type == 262 || this.type == 286) && !this.noLight)
            return new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0);
          if (this.type == 213 || this.type == 260)
          {
            int num2 = (int) ((double) this.scale / 2.5 * (double) byte.MaxValue);
            return new Color(num2, num2, num2, num2);
          }
          if (this.type == 64 && this.alpha == (int) byte.MaxValue && this.noLight)
            return new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0);
          if (this.type == 197)
            return new Color(250, 250, 250, 150);
          if (this.type >= 110 && this.type <= 114)
            return new Color(200, 200, 200, 0);
          if (this.type == 204)
            return new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0);
          if (this.type == 181)
            return new Color(200, 200, 200, 0);
          if (this.type == 182 || this.type == 206)
            return new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0);
          if (this.type == 159)
            return new Color(250, 250, 250, 50);
          if (this.type == 163 || this.type == 205)
            return new Color(250, 250, 250, 0);
          if (this.type == 170)
            return new Color(200, 200, 200, 100);
          if (this.type == 180)
            return new Color(200, 200, 200, 0);
          if (this.type == 175)
            return new Color(200, 200, 200, 0);
          if (this.type == 183)
            return new Color(50, 0, 0, 0);
          if (this.type == 172)
            return new Color(250, 250, 250, 150);
          if (this.type == 160 || this.type == 162 || this.type == 164 || this.type == 173)
          {
            int num3 = (int) (250.0 * (double) this.scale);
            return new Color(num3, num3, num3, 0);
          }
          if (this.type == 92 || this.type == 106 || this.type == 107)
            return new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0);
          if (this.type == 185)
            return new Color(200, 200, (int) byte.MaxValue, 125);
          if (this.type == (int) sbyte.MaxValue || this.type == 187)
            return new Color((int) newColor.R, (int) newColor.G, (int) newColor.B, 25);
          if (this.type == 156 || this.type == 230 || this.type == 234)
            return new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0);
          if (this.type == 270)
            return new Color((int) newColor.R / 2 + (int) sbyte.MaxValue, (int) newColor.G / 2 + (int) sbyte.MaxValue, (int) newColor.B / 2 + (int) sbyte.MaxValue, 25);
          if (this.type == 271)
            return new Color((int) newColor.R / 2 + (int) sbyte.MaxValue, (int) newColor.G / 2 + (int) sbyte.MaxValue, (int) newColor.B / 2 + (int) sbyte.MaxValue, (int) sbyte.MaxValue);
          if (this.type == 6 || this.type == 242 || this.type == 174 || this.type == 135 || this.type == 75 || this.type == 20 || this.type == 21 || this.type == 231 || this.type == 169 || this.type >= 130 && this.type <= 134 || this.type == 158 || this.type == 293 || this.type == 294 || this.type == 295 || this.type == 296 || this.type == 297 || this.type == 298)
            return new Color((int) newColor.R, (int) newColor.G, (int) newColor.B, 25);
          if (this.type == 278)
            return new Color(newColor.ToVector3() * this.color.ToVector3())
            {
              A = 25
            };
          if (this.type >= 219 && this.type <= 223)
          {
            newColor = Color.Lerp(newColor, Color.White, 0.5f);
            return new Color((int) newColor.R, (int) newColor.G, (int) newColor.B, 25);
          }
          if (this.type == 226 || this.type == 272)
          {
            newColor = Color.Lerp(newColor, Color.White, 0.8f);
            return new Color((int) newColor.R, (int) newColor.G, (int) newColor.B, 25);
          }
          if (this.type == 228)
          {
            newColor = Color.Lerp(newColor, Color.White, 0.8f);
            return new Color((int) newColor.R, (int) newColor.G, (int) newColor.B, 25);
          }
          if (this.type == 279)
          {
            int a = (int) newColor.A;
            newColor = Color.Lerp(newColor, Color.White, 0.8f);
            return new Color((int) newColor.R, (int) newColor.G, (int) newColor.B, a) * MathHelper.Min(this.scale, 1f);
          }
          if (this.type == 229 || this.type == 269)
          {
            newColor = Color.Lerp(newColor, Color.White, 0.6f);
            return new Color((int) newColor.R, (int) newColor.G, (int) newColor.B, 25);
          }
          if ((this.type == 68 || this.type == 70) && this.noGravity)
            return new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0);
          if (this.type == 157)
          {
            int maxValue;
            int num4 = maxValue = (int) byte.MaxValue;
            int num5 = maxValue;
            int num6 = maxValue;
            float num7 = (float) ((double) Main.mouseTextColor / 100.0 - 1.60000002384186);
            int num8 = (int) ((double) num6 * (double) num7);
            int num9 = (int) ((double) num5 * (double) num7);
            int num10 = (int) ((double) num4 * (double) num7);
            int a = (int) (100.0 * (double) num7);
            int r = num8 + 50;
            if (r > (int) byte.MaxValue)
              r = (int) byte.MaxValue;
            int g = num9 + 50;
            if (g > (int) byte.MaxValue)
              g = (int) byte.MaxValue;
            int b = num10 + 50;
            if (b > (int) byte.MaxValue)
              b = (int) byte.MaxValue;
            return new Color(r, g, b, a);
          }
          if (this.type == 284)
            return new Color(newColor.ToVector4() * this.color.ToVector4())
            {
              A = this.color.A
            };
          if (this.type == 15 || this.type == 274 || this.type == 20 || this.type == 21 || this.type == 29 || this.type == 35 || this.type == 41 || this.type == 44 || this.type == 27 || this.type == 45 || this.type == 55 || this.type == 56 || this.type == 57 || this.type == 58 || this.type == 73 || this.type == 74)
            num1 = (float) (((double) num1 + 3.0) / 4.0);
          else if (this.type == 43)
          {
            num1 = (float) (((double) num1 + 9.0) / 10.0);
          }
          else
          {
            if (this.type >= 244 && this.type <= 247)
              return new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0);
            if (this.type == 66)
              return new Color((int) newColor.R, (int) newColor.G, (int) newColor.B, 0);
            if (this.type == 267)
              return new Color((int) this.color.R, (int) this.color.G, (int) this.color.B, 0);
            if (this.type == 71)
              return new Color(200, 200, 200, 0);
            if (this.type == 72)
              return new Color(200, 200, 200, 200);
          }
          int r1 = (int) ((double) newColor.R * (double) num1);
          int g1 = (int) ((double) newColor.G * (double) num1);
          int b1 = (int) ((double) newColor.B * (double) num1);
          int a1 = (int) newColor.A - this.alpha;
          if (a1 < 0)
            a1 = 0;
          if (a1 > (int) byte.MaxValue)
            a1 = (int) byte.MaxValue;
          return new Color(r1, g1, b1, a1);
      }
    }

    public Color GetColor(Color newColor)
    {
      if (this.type == 284)
        return Color.Transparent;
      int r = (int) this.color.R - ((int) byte.MaxValue - (int) newColor.R);
      int g = (int) this.color.G - ((int) byte.MaxValue - (int) newColor.G);
      int b = (int) this.color.B - ((int) byte.MaxValue - (int) newColor.B);
      int a = (int) this.color.A - ((int) byte.MaxValue - (int) newColor.A);
      if (r < 0)
        r = 0;
      if (r > (int) byte.MaxValue)
        r = (int) byte.MaxValue;
      if (g < 0)
        g = 0;
      if (g > (int) byte.MaxValue)
        g = (int) byte.MaxValue;
      if (b < 0)
        b = 0;
      if (b > (int) byte.MaxValue)
        b = (int) byte.MaxValue;
      if (a < 0)
        a = 0;
      if (a > (int) byte.MaxValue)
        a = (int) byte.MaxValue;
      return new Color(r, g, b, a);
    }
  }
}
