public void Update()
{
Main.tileSolid[379] = true;
Tile tile1 = Main.tile[this.x - 1, this.y];
Tile tile2 = Main.tile[this.x + 1, this.y];
Tile tile3 = Main.tile[this.x, this.y - 1];
Tile tile4 = Main.tile[this.x, this.y + 1];
Tile tile5 = Main.tile[this.x, this.y];
if (tile5.nactive() && Main.tileSolid[(int)tile5.type] && !Main.tileSolidTop[(int)tile5.type])
{
int num = (int)tile5.type;
this.kill = 9;
}
else
{
byte num1 = tile5.liquid;
if (this.y > Main.maxTilesY - 200 && (int)tile5.liquidType() == 0 && (int)tile5.liquid > 0)
{
byte num2 = (byte)2;
if ((int)tile5.liquid < (int)num2)
num2 = tile5.liquid;
tile5.liquid -= num2;
}
if ((int)tile5.liquid == 0)
{
this.kill = 9;
}
else
{
if (tile5.lava())
{
Liquid.LavaCheck(this.x, this.y);
if (!Liquid.quickFall)
{
if (this.delay < 5)
{
++this.delay;
return;
}
this.delay = 0;
}
}
else
{
if (tile1.lava())
Liquid.AddWater(this.x - 1, this.y);
if (tile2.lava())
Liquid.AddWater(this.x + 1, this.y);
if (tile3.lava())
Liquid.AddWater(this.x, this.y - 1);
if (tile4.lava())
Liquid.AddWater(this.x, this.y + 1);
if (tile5.honey())
{
Liquid.HoneyCheck(this.x, this.y);
if (!Liquid.quickFall)
{
if (this.delay < 10)
{
++this.delay;
return;
}
this.delay = 0;
}
}
else
{
if (tile1.honey())
Liquid.AddWater(this.x - 1, this.y);
if (tile2.honey())
Liquid.AddWater(this.x + 1, this.y);
if (tile3.honey())
Liquid.AddWater(this.x, this.y - 1);
if (tile4.honey())
Liquid.AddWater(this.x, this.y + 1);
}
}
if ((!tile4.nactive() || !Main.tileSolid[(int)tile4.type] || Main.tileSolidTop[(int)tile4.type]) && (((int)tile4.liquid <= 0 || (int)tile4.liquidType() == (int)tile5.liquidType()) && (int)tile4.liquid < (int)byte.MaxValue))
{
float num2 = (float)((int)byte.MaxValue - (int)tile4.liquid);
if ((double)num2 > (double)tile5.liquid)
num2 = (float)tile5.liquid;
tile5.liquid -= (byte)num2;
tile4.liquid += (byte)num2;
tile4.liquidType((int)tile5.liquidType());
Liquid.AddWater(this.x, this.y + 1);
tile4.skipLiquid(true);
tile5.skipLiquid(true);
if ((int)tile5.liquid > 250)
{
tile5.liquid = byte.MaxValue;
}
else
{
Liquid.AddWater(this.x - 1, this.y);
Liquid.AddWater(this.x + 1, this.y);
}
}
if ((int)tile5.liquid > 0)
{
bool flag1 = true;
bool flag2 = true;
bool flag3 = true;
bool flag4 = true;
if (tile1.nactive() && Main.tileSolid[(int)tile1.type] && !Main.tileSolidTop[(int)tile1.type])
flag1 = false;
else if ((int)tile1.liquid > 0 && (int)tile1.liquidType() != (int)tile5.liquidType())
flag1 = false;
else if (Main.tile[this.x - 2, this.y].nactive() && Main.tileSolid[(int)Main.tile[this.x - 2, this.y].type] && !Main.tileSolidTop[(int)Main.tile[this.x - 2, this.y].type])
flag3 = false;
else if ((int)Main.tile[this.x - 2, this.y].liquid == 0)
flag3 = false;
else if ((int)Main.tile[this.x - 2, this.y].liquid > 0 && (int)Main.tile[this.x - 2, this.y].liquidType() != (int)tile5.liquidType())
flag3 = false;
if (tile2.nactive() && Main.tileSolid[(int)tile2.type] && !Main.tileSolidTop[(int)tile2.type])
flag2 = false;
else if ((int)tile2.liquid > 0 && (int)tile2.liquidType() != (int)tile5.liquidType())
flag2 = false;
else if (Main.tile[this.x + 2, this.y].nactive() && Main.tileSolid[(int)Main.tile[this.x + 2, this.y].type] && !Main.tileSolidTop[(int)Main.tile[this.x + 2, this.y].type])
flag4 = false;
else if ((int)Main.tile[this.x + 2, this.y].liquid == 0)
flag4 = false;
else if ((int)Main.tile[this.x + 2, this.y].liquid > 0 && (int)Main.tile[this.x + 2, this.y].liquidType() != (int)tile5.liquidType())
flag4 = false;
int num2 = 0;
if ((int)tile5.liquid < 3)
num2 = -1;
if (flag1 && flag2)
{
if (flag3 && flag4)
{
bool flag5 = true;
bool flag6 = true;
if (Main.tile[this.x - 3, this.y].nactive() && Main.tileSolid[(int)Main.tile[this.x - 3, this.y].type] && !Main.tileSolidTop[(int)Main.tile[this.x - 3, this.y].type])
flag5 = false;
else if ((int)Main.tile[this.x - 3, this.y].liquid == 0)
flag5 = false;
else if ((int)Main.tile[this.x - 3, this.y].liquidType() != (int)tile5.liquidType())
flag5 = false;
if (Main.tile[this.x + 3, this.y].nactive() && Main.tileSolid[(int)Main.tile[this.x + 3, this.y].type] && !Main.tileSolidTop[(int)Main.tile[this.x + 3, this.y].type])
flag6 = false;
else if ((int)Main.tile[this.x + 3, this.y].liquid == 0)
flag6 = false;
else if ((int)Main.tile[this.x + 3, this.y].liquidType() != (int)tile5.liquidType())
flag6 = false;
if (flag5 && flag6)
{
float num3 = (float)Math.Round((double)((int)tile1.liquid + (int)tile2.liquid + (int)Main.tile[this.x - 2, this.y].liquid + (int)Main.tile[this.x + 2, this.y].liquid + (int)Main.tile[this.x - 3, this.y].liquid + (int)Main.tile[this.x + 3, this.y].liquid + (int)tile5.liquid + num2) / 7.0);
int num4 = 0;
tile1.liquidType((int)tile5.liquidType());
if ((int)tile1.liquid != (int)(byte)num3)
{
tile1.liquid = (byte)num3;
Liquid.AddWater(this.x - 1, this.y);
}
else
++num4;
tile2.liquidType((int)tile5.liquidType());
if ((int)tile2.liquid != (int)(byte)num3)
{
tile2.liquid = (byte)num3;
Liquid.AddWater(this.x + 1, this.y);
}
else
++num4;
Main.tile[this.x - 2, this.y].liquidType((int)tile5.liquidType());
if ((int)Main.tile[this.x - 2, this.y].liquid != (int)(byte)num3)
{
Main.tile[this.x - 2, this.y].liquid = (byte)num3;
Liquid.AddWater(this.x - 2, this.y);
}
else
++num4;
Main.tile[this.x + 2, this.y].liquidType((int)tile5.liquidType());
if ((int)Main.tile[this.x + 2, this.y].liquid != (int)(byte)num3)
{
Main.tile[this.x + 2, this.y].liquid = (byte)num3;
Liquid.AddWater(this.x + 2, this.y);
}
else
++num4;
Main.tile[this.x - 3, this.y].liquidType((int)tile5.liquidType());
if ((int)Main.tile[this.x - 3, this.y].liquid != (int)(byte)num3)
{
Main.tile[this.x - 3, this.y].liquid = (byte)num3;
Liquid.AddWater(this.x - 3, this.y);
}
else
++num4;
Main.tile[this.x + 3, this.y].liquidType((int)tile5.liquidType());
if ((int)Main.tile[this.x + 3, this.y].liquid != (int)(byte)num3)
{
Main.tile[this.x + 3, this.y].liquid = (byte)num3;
Liquid.AddWater(this.x + 3, this.y);
}
else
++num4;
if ((int)tile1.liquid != (int)(byte)num3 || (int)tile5.liquid != (int)(byte)num3)
Liquid.AddWater(this.x - 1, this.y);
if ((int)tile2.liquid != (int)(byte)num3 || (int)tile5.liquid != (int)(byte)num3)
Liquid.AddWater(this.x + 1, this.y);
if ((int)Main.tile[this.x - 2, this.y].liquid != (int)(byte)num3 || (int)tile5.liquid != (int)(byte)num3)
Liquid.AddWater(this.x - 2, this.y);
if ((int)Main.tile[this.x + 2, this.y].liquid != (int)(byte)num3 || (int)tile5.liquid != (int)(byte)num3)
Liquid.AddWater(this.x + 2, this.y);
if ((int)Main.tile[this.x - 3, this.y].liquid != (int)(byte)num3 || (int)tile5.liquid != (int)(byte)num3)
Liquid.AddWater(this.x - 3, this.y);
if ((int)Main.tile[this.x + 3, this.y].liquid != (int)(byte)num3 || (int)tile5.liquid != (int)(byte)num3)
Liquid.AddWater(this.x + 3, this.y);
if (num4 != 6 || (int)tile3.liquid <= 0)
tile5.liquid = (byte)num3;
}
else
{
int num3 = 0;
float num4 = (float)Math.Round((double)((int)tile1.liquid + (int)tile2.liquid + (int)Main.tile[this.x - 2, this.y].liquid + (int)Main.tile[this.x + 2, this.y].liquid + (int)tile5.liquid + num2) / 5.0);
tile1.liquidType((int)tile5.liquidType());
if ((int)tile1.liquid != (int)(byte)num4)
{
tile1.liquid = (byte)num4;
Liquid.AddWater(this.x - 1, this.y);
}
else
++num3;
tile2.liquidType((int)tile5.liquidType());
if ((int)tile2.liquid != (int)(byte)num4)
{
tile2.liquid = (byte)num4;
Liquid.AddWater(this.x + 1, this.y);
}
else
++num3;
Main.tile[this.x - 2, this.y].liquidType((int)tile5.liquidType());
if ((int)Main.tile[this.x - 2, this.y].liquid != (int)(byte)num4)
{
Main.tile[this.x - 2, this.y].liquid = (byte)num4;
Liquid.AddWater(this.x - 2, this.y);
}
else
++num3;
Main.tile[this.x + 2, this.y].liquidType((int)tile5.liquidType());
if ((int)Main.tile[this.x + 2, this.y].liquid != (int)(byte)num4)
{
Main.tile[this.x + 2, this.y].liquid = (byte)num4;
Liquid.AddWater(this.x + 2, this.y);
}
else
++num3;
if ((int)tile1.liquid != (int)(byte)num4 || (int)tile5.liquid != (int)(byte)num4)
Liquid.AddWater(this.x - 1, this.y);
if ((int)tile2.liquid != (int)(byte)num4 || (int)tile5.liquid != (int)(byte)num4)
Liquid.AddWater(this.x + 1, this.y);
if ((int)Main.tile[this.x - 2, this.y].liquid != (int)(byte)num4 || (int)tile5.liquid != (int)(byte)num4)
Liquid.AddWater(this.x - 2, this.y);
if ((int)Main.tile[this.x + 2, this.y].liquid != (int)(byte)num4 || (int)tile5.liquid != (int)(byte)num4)
Liquid.AddWater(this.x + 2, this.y);
if (num3 != 4 || (int)tile3.liquid <= 0)
tile5.liquid = (byte)num4;
}
}
else if (flag3)
{
float num3 = (float)Math.Round((double)((int)tile1.liquid + (int)tile2.liquid + (int)Main.tile[this.x - 2, this.y].liquid + (int)tile5.liquid + num2) / 4.0 + 0.001);
tile1.liquidType((int)tile5.liquidType());
if ((int)tile1.liquid != (int)(byte)num3 || (int)tile5.liquid != (int)(byte)num3)
{
tile1.liquid = (byte)num3;
Liquid.AddWater(this.x - 1, this.y);
}
tile2.liquidType((int)tile5.liquidType());
if ((int)tile2.liquid != (int)(byte)num3 || (int)tile5.liquid != (int)(byte)num3)
{
tile2.liquid = (byte)num3;
Liquid.AddWater(this.x + 1, this.y);
}
Main.tile[this.x - 2, this.y].liquidType((int)tile5.liquidType());
if ((int)Main.tile[this.x - 2, this.y].liquid != (int)(byte)num3 || (int)tile5.liquid != (int)(byte)num3)
{
Main.tile[this.x - 2, this.y].liquid = (byte)num3;
Liquid.AddWater(this.x - 2, this.y);
}
tile5.liquid = (byte)num3;
}
else if (flag4)
{
float num3 = (float)Math.Round((double)((int)tile1.liquid + (int)tile2.liquid + (int)Main.tile[this.x + 2, this.y].liquid + (int)tile5.liquid + num2) / 4.0 + 0.001);
tile1.liquidType((int)tile5.liquidType());
if ((int)tile1.liquid != (int)(byte)num3 || (int)tile5.liquid != (int)(byte)num3)
{
tile1.liquid = (byte)num3;
Liquid.AddWater(this.x - 1, this.y);
}
tile2.liquidType((int)tile5.liquidType());
if ((int)tile2.liquid != (int)(byte)num3 || (int)tile5.liquid != (int)(byte)num3)
{
tile2.liquid = (byte)num3;
Liquid.AddWater(this.x + 1, this.y);
}
Main.tile[this.x + 2, this.y].liquidType((int)tile5.liquidType());
if ((int)Main.tile[this.x + 2, this.y].liquid != (int)(byte)num3 || (int)tile5.liquid != (int)(byte)num3)
{
Main.tile[this.x + 2, this.y].liquid = (byte)num3;
Liquid.AddWater(this.x + 2, this.y);
}
tile5.liquid = (byte)num3;
}
else
{
float num3 = (float)Math.Round((double)((int)tile1.liquid + (int)tile2.liquid + (int)tile5.liquid + num2) / 3.0 + 0.001);
tile1.liquidType((int)tile5.liquidType());
if ((int)tile1.liquid != (int)(byte)num3)
tile1.liquid = (byte)num3;
if ((int)tile5.liquid != (int)(byte)num3 || (int)tile1.liquid != (int)(byte)num3)
Liquid.AddWater(this.x - 1, this.y);
tile2.liquidType((int)tile5.liquidType());
if ((int)tile2.liquid != (int)(byte)num3)
tile2.liquid = (byte)num3;
if ((int)tile5.liquid != (int)(byte)num3 || (int)tile2.liquid != (int)(byte)num3)
Liquid.AddWater(this.x + 1, this.y);
tile5.liquid = (byte)num3;
}
}
else if (flag1)
{
float num3 = (float)Math.Round((double)((int)tile1.liquid + (int)tile5.liquid + num2) / 2.0 + 0.001);
if ((int)tile1.liquid != (int)(byte)num3)
tile1.liquid = (byte)num3;
tile1.liquidType((int)tile5.liquidType());
if ((int)tile5.liquid != (int)(byte)num3 || (int)tile1.liquid != (int)(byte)num3)
Liquid.AddWater(this.x - 1, this.y);
tile5.liquid = (byte)num3;
}
else if (flag2)
{
float num3 = (float)Math.Round((double)((int)tile2.liquid + (int)tile5.liquid + num2) / 2.0 + 0.001);
if ((int)tile2.liquid != (int)(byte)num3)
tile2.liquid = (byte)num3;
tile2.liquidType((int)tile5.liquidType());
if ((int)tile5.liquid != (int)(byte)num3 || (int)tile2.liquid != (int)(byte)num3)
Liquid.AddWater(this.x + 1, this.y);
tile5.liquid = (byte)num3;
}
}
if ((int)tile5.liquid != (int)num1)
{
if ((int)tile5.liquid == 254 && (int)num1 == (int)byte.MaxValue)
{
tile5.liquid = byte.MaxValue;
++this.kill;
}
else
{
Liquid.AddWater(this.x, this.y - 1);
this.kill = 0;
}
}
else
++this.kill;
}
}
}