public static void UpdateLiquid()
{
int num1 = Main.netMode;
if (!WorldGen.gen)
{
if (!Liquid.panicMode)
{
if (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer > 4000)
{
++Liquid.panicCounter;
if (Liquid.panicCounter > 1800 || Liquid.numLiquid + LiquidBuffer.numLiquidBuffer > 13500)
Liquid.StartPanic();
}
else
Liquid.panicCounter = 0;
}
if (Liquid.panicMode)
{
int num2 = 0;
while (Liquid.panicY >= 3 && num2 < 5)
{
++num2;
Liquid.QuickWater(0, Liquid.panicY, Liquid.panicY);
--Liquid.panicY;
if (Liquid.panicY < 3)
{
Console.WriteLine("Water has been settled.");
Liquid.panicCounter = 0;
Liquid.panicMode = false;
WorldGen.WaterCheck();
if (Main.netMode == 2)
{
for (int index1 = 0; index1 < (int)byte.MaxValue; ++index1)
{
for (int index2 = 0; index2 < Main.maxSectionsX; ++index2)
{
for (int index3 = 0; index3 < Main.maxSectionsY; ++index3)
Netplay.Clients[index1].TileSections[index2, index3] = false;
}
}
}
}
}
return;
}
}
Liquid.quickFall = Liquid.quickSettle || Liquid.numLiquid > 2000;
++Liquid.wetCounter;
int num3 = Liquid.maxLiquid / Liquid.cycles;
int num4 = num3 * (Liquid.wetCounter - 1);
int num5 = num3 * Liquid.wetCounter;
if (Liquid.wetCounter == Liquid.cycles)
num5 = Liquid.numLiquid;
if (num5 > Liquid.numLiquid)
{
num5 = Liquid.numLiquid;
int num2 = Main.netMode;
Liquid.wetCounter = Liquid.cycles;
}
if (Liquid.quickFall)
{
for (int index = num4; index < num5; ++index)
{
Main.liquid[index].delay = 10;
Main.liquid[index].Update();
Main.tile[Main.liquid[index].x, Main.liquid[index].y].skipLiquid(false);
}
}
else
{
for (int index = num4; index < num5; ++index)
{
if (!Main.tile[Main.liquid[index].x, Main.liquid[index].y].skipLiquid())
Main.liquid[index].Update();
else
Main.tile[Main.liquid[index].x, Main.liquid[index].y].skipLiquid(false);
}
}
if (Liquid.wetCounter >= Liquid.cycles)
{
Liquid.wetCounter = 0;
for (int l = Liquid.numLiquid - 1; l >= 0; --l)
{
if (Main.liquid[l].kill > 4)
Liquid.DelWater(l);
}
int num2 = Liquid.maxLiquid - (Liquid.maxLiquid - Liquid.numLiquid);
if (num2 > LiquidBuffer.numLiquidBuffer)
num2 = LiquidBuffer.numLiquidBuffer;
for (int index = 0; index < num2; ++index)
{
Main.tile[Main.liquidBuffer[0].x, Main.liquidBuffer[0].y].checkingLiquid(false);
Liquid.AddWater(Main.liquidBuffer[0].x, Main.liquidBuffer[0].y);
LiquidBuffer.DelBuffer(0);
}
if (Liquid.numLiquid > 0 && Liquid.numLiquid > Liquid.stuckAmount - 50 && Liquid.numLiquid < Liquid.stuckAmount + 50)
{
++Liquid.stuckCount;
if (Liquid.stuckCount >= 10000)
{
Liquid.stuck = true;
for (int l = Liquid.numLiquid - 1; l >= 0; --l)
Liquid.DelWater(l);
Liquid.stuck = false;
Liquid.stuckCount = 0;
}
}
else
{
Liquid.stuckCount = 0;
Liquid.stuckAmount = Liquid.numLiquid;
}
}
if (Main.netMode != 2 || Liquid._netChangeSet.Count <= 0)
return;
Utils.Swap<HashSet<int>>(ref Liquid._netChangeSet, ref Liquid._swapNetChangeSet);
NetManager.Instance.Broadcast(NetLiquidModule.Serialize(Liquid._swapNetChangeSet), -1);
Liquid._swapNetChangeSet.Clear();
}