58    {
   59        if (Main.netMode == 2)
   60        {
   61            return;
   62        }
   63        int num = -1;
   64        for (
int i = 0; 
i < 200; 
i++)
 
   65        {
   66            if (!Main.cloud[i].active)
   67            {
   69                break;
   70            }
   71        }
   72        if (num < 0)
   73        {
   74            return;
   75        }
   76        Main.cloud[num].kill = false;
   77        Main.cloud[num].rSpeed = 0f;
   78        Main.cloud[num].sSpeed = 0f;
   79        Main.cloud[num].scale = (float)
rand.Next(70, 131) * 0.01f;
 
   80        Main.cloud[num].rotation = (float)
rand.Next(-10, 11) * 0.01f;
 
   81        Main.cloud[num].width = (int)((
float)
TextureAssets.
Cloud[Main.cloud[num].type].Width() * Main.cloud[num].scale);
 
   82        Main.cloud[num].height = (int)((
float)
TextureAssets.
Cloud[Main.cloud[num].type].Height() * Main.cloud[num].scale);
 
   83        Main.cloud[num].Alpha = 0f;
   85        if (
rand.Next(2) == 0)
 
   86        {
   88        }
   89        float num2 = Main.windSpeedCurrent;
   90        if (!Main.gameMenu)
   91        {
   92            num2 = Main.windSpeedCurrent - Main.player[Main.myPlayer].velocity.X * 0.1f;
   93        }
   94        int num3 = 0;
   95        int num4 = 0;
   96        if (num2 > 0f)
   97        {
   98            num3 -= 200;
   99        }
  100        if (num2 < 0f)
  101        {
  102            num4 += 200;
  103        }
  104        int num5 = 300;
  105        float x = 
rand.Next(num3 - num5, Main.screenWidth + num4 + num5);
 
  106        Main.cloud[num].Alpha = 0f;
  107        Main.cloud[num].position.Y = 
rand.Next((
int)((float)(-Main.screenHeight) * 0.25f), (
int)((float)Main.screenHeight * 0.15f));
 
  108        if (
rand.Next(3) == 0)
 
  109        {
  110            Main.cloud[num].position.Y -= 
rand.Next((
int)((float)Main.screenHeight * 0.1f));
 
  111        }
  112        Main.cloud[num].type = 
rand.Next(4);
 
  113        if ((Main.cloudAlpha > 0f && 
rand.Next(4) != 0) || (Main.cloudBGActive >= 1f && 
rand.Next(2) == 0))
 
  114        {
  115            Main.cloud[num].type = 
rand.Next(18, 22);
 
  116            if ((double)Main.cloud[num].scale >= 1.15)
  117            {
  118                Main.cloud[num].position.Y -= 150f;
  119            }
  120            if (Main.cloud[num].scale >= 1f)
  121            {
  122                Main.cloud[num].position.Y -= 150f;
  123            }
  124        }
  125        else if (Main.cloudBGActive <= 0f && Main.cloudAlpha == 0f && Main.cloud[num].scale < 1f && Main.cloud[num].position.Y < (float)(-Main.screenHeight) * 0.15f && (double)Main.numClouds <= 80.0)
  126        {
  127            Main.cloud[num].type = 
rand.Next(9, 14);
 
  128        }
  129        else if ((((double)Main.cloud[num].scale < 1.15 && Main.cloud[num].position.Y < (float)(-Main.screenHeight) * 0.3f) || ((double)Main.cloud[num].scale < 0.85 && Main.cloud[num].position.Y < (float)Main.screenHeight * 0.15f)) && ((double)Main.numClouds > 70.0 || Main.cloudBGActive >= 1f))
  130        {
  131            Main.cloud[num].type = 
rand.Next(4, 9);
 
  132        }
  133        else if (Main.cloud[num].position.Y > (
float)(-Main.screenHeight) * 0.15f && 
rand.Next(2) == 0 && (double)Main.numClouds > 20.0)
 
  134        {
  135            Main.cloud[num].type = 
rand.Next(14, 18);
 
  136        }
  137        if (
rand.Next((Main.dontStarveWorld || Main.tenthAnniversaryWorld) ? 25 : 150) == 0)
 
  138        {
  140        }
  141        else if (Main.tenthAnniversaryWorld && 
rand.Next(3) == 0)
 
  142        {
  144        }
  145        if ((double)Main.cloud[num].scale > 1.2)
  146        {
  147            Main.cloud[num].position.Y += 100f;
  148        }
  149        if ((double)Main.cloud[num].scale > 1.3)
  150        {
  151            Main.cloud[num].scale = 1.3f;
  152        }
  153        if ((double)Main.cloud[num].scale < 0.7)
  154        {
  155            Main.cloud[num].scale = 0.7f;
  156        }
  157        Main.cloud[num].active = true;
  158        Main.cloud[num].position.X = x;
  159        if (Main.cloud[num].position.X > (float)(Main.screenWidth + 400))
  160        {
  161            Main.cloud[num].Alpha = 1f;
  162        }
  163        if (Main.cloud[num].position.X + (
float)
TextureAssets.
Cloud[Main.cloud[num].type].Width() * Main.cloud[num].scale < -400f)
 
  164        {
  165            Main.cloud[num].Alpha = 1f;
  166        }
  167        Rectangle rectangle = 
new Rectangle((
int)Main.cloud[num].position.X, (
int)Main.cloud[num].position.Y, Main.cloud[num].width, Main.cloud[num].height);
 
  168        for (int j = 0; j < 200; j++)
  169        {
  170            if (num != j && Main.cloud[j].active)
  171            {
  172                Rectangle value = 
new Rectangle((
int)Main.cloud[j].position.X, (
int)Main.cloud[j].position.Y, Main.cloud[j].width, Main.cloud[j].height);
 
  174                {
  175                    Main.cloud[num].active = false;
  176                }
  177            }
  178        }
  179    }
static UnifiedRandom rand
 
static int RollRareCloud()
 
static Asset< Texture2D >[] Cloud
 
bool Intersects(Rectangle value)