public static void AddWater(int x, int y) { Tile tile = Main.tile[x, y]; if (Main.tile[x, y] == null || tile.checkingLiquid() || x >= Main.maxTilesX - 5 || y >= Main.maxTilesY - 5 || x < 5 || y < 5 || tile.liquid == 0) { return; } if (numLiquid >= maxLiquid - 1) { LiquidBuffer.AddBuffer(x, y); return; } tile.checkingLiquid(true); Main.liquid[numLiquid].kill = 0; Main.liquid[numLiquid].x = x; Main.liquid[numLiquid].y = y; Main.liquid[numLiquid].delay = 0; tile.skipLiquid(false); numLiquid++; if (Main.netMode == 2) { NetSendLiquid(x, y); } if (!tile.active() || WorldGen.gen) { return; } bool flag = false; if (tile.lava()) { if (TileObjectData.CheckLavaDeath(tile)) { flag = true; } } else if (TileObjectData.CheckWaterDeath(tile)) { flag = true; } if (flag) { WorldGen.KillTile(x, y); if (Main.netMode == 2) { NetMessage.SendData(17, -1, -1, "", 0, x, y); } } }
public void Update() { Main.tileSolid[379] = true; Tile tile = Main.tile[x - 1, y]; Tile tile2 = Main.tile[x + 1, y]; Tile tile3 = Main.tile[x, y - 1]; Tile tile4 = Main.tile[x, y + 1]; Tile tile5 = Main.tile[x, y]; if (tile5.nactive() && Main.tileSolid[tile5.type] && !Main.tileSolidTop[tile5.type]) { ushort type = tile5.type; int num5 = 10; kill = 9; return; } byte liquid = tile5.liquid; float num = 0f; if (y > Main.maxTilesY - 200 && tile5.liquidType() == 0 && tile5.liquid > 0) { byte b = 2; if (tile5.liquid < b) { b = tile5.liquid; } tile5.liquid -= b; } if (tile5.liquid == 0) { kill = 9; return; } if (tile5.lava()) { LavaCheck(x, y); if (!quickFall) { if (delay < 5) { delay++; return; } delay = 0; } } else { if (tile.lava()) { AddWater(x - 1, y); } if (tile2.lava()) { AddWater(x + 1, y); } if (tile3.lava()) { AddWater(x, y - 1); } if (tile4.lava()) { AddWater(x, y + 1); } if (tile5.honey()) { HoneyCheck(x, y); if (!quickFall) { if (delay < 10) { delay++; return; } delay = 0; } } else { if (tile.honey()) { AddWater(x - 1, y); } if (tile2.honey()) { AddWater(x + 1, y); } if (tile3.honey()) { AddWater(x, y - 1); } if (tile4.honey()) { AddWater(x, y + 1); } } } if ((!tile4.nactive() || !Main.tileSolid[tile4.type] || Main.tileSolidTop[tile4.type]) && (tile4.liquid <= 0 || tile4.liquidType() == tile5.liquidType()) && tile4.liquid < byte.MaxValue) { num = 255 - tile4.liquid; if (num > (float)(int)tile5.liquid) { num = (int)tile5.liquid; } tile5.liquid -= (byte)num; tile4.liquid += (byte)num; tile4.liquidType(tile5.liquidType()); AddWater(x, y + 1); tile4.skipLiquid(true); tile5.skipLiquid(true); if (tile5.liquid > 250) { tile5.liquid = byte.MaxValue; } else { AddWater(x - 1, y); AddWater(x + 1, y); } } if (tile5.liquid > 0) { bool flag = true; bool flag2 = true; bool flag3 = true; bool flag4 = true; if (tile.nactive() && Main.tileSolid[tile.type] && !Main.tileSolidTop[tile.type]) { flag = false; } else if (tile.liquid > 0 && tile.liquidType() != tile5.liquidType()) { flag = false; } else if (Main.tile[x - 2, y].nactive() && Main.tileSolid[Main.tile[x - 2, y].type] && !Main.tileSolidTop[Main.tile[x - 2, y].type]) { flag3 = false; } else if (Main.tile[x - 2, y].liquid == 0) { flag3 = false; } else if (Main.tile[x - 2, y].liquid > 0 && Main.tile[x - 2, y].liquidType() != tile5.liquidType()) { flag3 = false; } if (tile2.nactive() && Main.tileSolid[tile2.type] && !Main.tileSolidTop[tile2.type]) { flag2 = false; } else if (tile2.liquid > 0 && tile2.liquidType() != tile5.liquidType()) { flag2 = false; } else if (Main.tile[x + 2, y].nactive() && Main.tileSolid[Main.tile[x + 2, y].type] && !Main.tileSolidTop[Main.tile[x + 2, y].type]) { flag4 = false; } else if (Main.tile[x + 2, y].liquid == 0) { flag4 = false; } else if (Main.tile[x + 2, y].liquid > 0 && Main.tile[x + 2, y].liquidType() != tile5.liquidType()) { flag4 = false; } int num2 = 0; if (tile5.liquid < 3) { num2 = -1; } if (flag && flag2) { if (flag3 && flag4) { bool flag5 = true; bool flag6 = true; if (Main.tile[x - 3, y].nactive() && Main.tileSolid[Main.tile[x - 3, y].type] && !Main.tileSolidTop[Main.tile[x - 3, y].type]) { flag5 = false; } else if (Main.tile[x - 3, y].liquid == 0) { flag5 = false; } else if (Main.tile[x - 3, y].liquidType() != tile5.liquidType()) { flag5 = false; } if (Main.tile[x + 3, y].nactive() && Main.tileSolid[Main.tile[x + 3, y].type] && !Main.tileSolidTop[Main.tile[x + 3, y].type]) { flag6 = false; } else if (Main.tile[x + 3, y].liquid == 0) { flag6 = false; } else if (Main.tile[x + 3, y].liquidType() != tile5.liquidType()) { flag6 = false; } if (flag5 && flag6) { num = tile.liquid + tile2.liquid + Main.tile[x - 2, y].liquid + Main.tile[x + 2, y].liquid + Main.tile[x - 3, y].liquid + Main.tile[x + 3, y].liquid + tile5.liquid + num2; num = (float)Math.Round(num / 7f); int num3 = 0; tile.liquidType(tile5.liquidType()); if (tile.liquid != (byte)num) { tile.liquid = (byte)num; AddWater(x - 1, y); } else { num3++; } tile2.liquidType(tile5.liquidType()); if (tile2.liquid != (byte)num) { tile2.liquid = (byte)num; AddWater(x + 1, y); } else { num3++; } Main.tile[x - 2, y].liquidType(tile5.liquidType()); if (Main.tile[x - 2, y].liquid != (byte)num) { Main.tile[x - 2, y].liquid = (byte)num; AddWater(x - 2, y); } else { num3++; } Main.tile[x + 2, y].liquidType(tile5.liquidType()); if (Main.tile[x + 2, y].liquid != (byte)num) { Main.tile[x + 2, y].liquid = (byte)num; AddWater(x + 2, y); } else { num3++; } Main.tile[x - 3, y].liquidType(tile5.liquidType()); if (Main.tile[x - 3, y].liquid != (byte)num) { Main.tile[x - 3, y].liquid = (byte)num; AddWater(x - 3, y); } else { num3++; } Main.tile[x + 3, y].liquidType(tile5.liquidType()); if (Main.tile[x + 3, y].liquid != (byte)num) { Main.tile[x + 3, y].liquid = (byte)num; AddWater(x + 3, y); } else { num3++; } if (tile.liquid != (byte)num || tile5.liquid != (byte)num) { AddWater(x - 1, y); } if (tile2.liquid != (byte)num || tile5.liquid != (byte)num) { AddWater(x + 1, y); } if (Main.tile[x - 2, y].liquid != (byte)num || tile5.liquid != (byte)num) { AddWater(x - 2, y); } if (Main.tile[x + 2, y].liquid != (byte)num || tile5.liquid != (byte)num) { AddWater(x + 2, y); } if (Main.tile[x - 3, y].liquid != (byte)num || tile5.liquid != (byte)num) { AddWater(x - 3, y); } if (Main.tile[x + 3, y].liquid != (byte)num || tile5.liquid != (byte)num) { AddWater(x + 3, y); } if (num3 != 6 || tile3.liquid <= 0) { tile5.liquid = (byte)num; } } else { int num4 = 0; num = tile.liquid + tile2.liquid + Main.tile[x - 2, y].liquid + Main.tile[x + 2, y].liquid + tile5.liquid + num2; num = (float)Math.Round(num / 5f); tile.liquidType(tile5.liquidType()); if (tile.liquid != (byte)num) { tile.liquid = (byte)num; AddWater(x - 1, y); } else { num4++; } tile2.liquidType(tile5.liquidType()); if (tile2.liquid != (byte)num) { tile2.liquid = (byte)num; AddWater(x + 1, y); } else { num4++; } Main.tile[x - 2, y].liquidType(tile5.liquidType()); if (Main.tile[x - 2, y].liquid != (byte)num) { Main.tile[x - 2, y].liquid = (byte)num; AddWater(x - 2, y); } else { num4++; } Main.tile[x + 2, y].liquidType(tile5.liquidType()); if (Main.tile[x + 2, y].liquid != (byte)num) { Main.tile[x + 2, y].liquid = (byte)num; AddWater(x + 2, y); } else { num4++; } if (tile.liquid != (byte)num || tile5.liquid != (byte)num) { AddWater(x - 1, y); } if (tile2.liquid != (byte)num || tile5.liquid != (byte)num) { AddWater(x + 1, y); } if (Main.tile[x - 2, y].liquid != (byte)num || tile5.liquid != (byte)num) { AddWater(x - 2, y); } if (Main.tile[x + 2, y].liquid != (byte)num || tile5.liquid != (byte)num) { AddWater(x + 2, y); } if (num4 != 4 || tile3.liquid <= 0) { tile5.liquid = (byte)num; } } } else if (flag3) { num = tile.liquid + tile2.liquid + Main.tile[x - 2, y].liquid + tile5.liquid + num2; num = (float)Math.Round((double)(num / 4f) + 0.001); tile.liquidType(tile5.liquidType()); if (tile.liquid != (byte)num || tile5.liquid != (byte)num) { tile.liquid = (byte)num; AddWater(x - 1, y); } tile2.liquidType(tile5.liquidType()); if (tile2.liquid != (byte)num || tile5.liquid != (byte)num) { tile2.liquid = (byte)num; AddWater(x + 1, y); } Main.tile[x - 2, y].liquidType(tile5.liquidType()); if (Main.tile[x - 2, y].liquid != (byte)num || tile5.liquid != (byte)num) { Main.tile[x - 2, y].liquid = (byte)num; AddWater(x - 2, y); } tile5.liquid = (byte)num; } else if (flag4) { num = tile.liquid + tile2.liquid + Main.tile[x + 2, y].liquid + tile5.liquid + num2; num = (float)Math.Round((double)(num / 4f) + 0.001); tile.liquidType(tile5.liquidType()); if (tile.liquid != (byte)num || tile5.liquid != (byte)num) { tile.liquid = (byte)num; AddWater(x - 1, y); } tile2.liquidType(tile5.liquidType()); if (tile2.liquid != (byte)num || tile5.liquid != (byte)num) { tile2.liquid = (byte)num; AddWater(x + 1, y); } Main.tile[x + 2, y].liquidType(tile5.liquidType()); if (Main.tile[x + 2, y].liquid != (byte)num || tile5.liquid != (byte)num) { Main.tile[x + 2, y].liquid = (byte)num; AddWater(x + 2, y); } tile5.liquid = (byte)num; } else { num = tile.liquid + tile2.liquid + tile5.liquid + num2; num = (float)Math.Round((double)(num / 3f) + 0.001); tile.liquidType(tile5.liquidType()); if (tile.liquid != (byte)num) { tile.liquid = (byte)num; } if (tile5.liquid != (byte)num || tile.liquid != (byte)num) { AddWater(x - 1, y); } tile2.liquidType(tile5.liquidType()); if (tile2.liquid != (byte)num) { tile2.liquid = (byte)num; } if (tile5.liquid != (byte)num || tile2.liquid != (byte)num) { AddWater(x + 1, y); } tile5.liquid = (byte)num; } } else if (flag) { num = tile.liquid + tile5.liquid + num2; num = (float)Math.Round((double)(num / 2f) + 0.001); if (tile.liquid != (byte)num) { tile.liquid = (byte)num; } tile.liquidType(tile5.liquidType()); if (tile5.liquid != (byte)num || tile.liquid != (byte)num) { AddWater(x - 1, y); } tile5.liquid = (byte)num; } else if (flag2) { num = tile2.liquid + tile5.liquid + num2; num = (float)Math.Round((double)(num / 2f) + 0.001); if (tile2.liquid != (byte)num) { tile2.liquid = (byte)num; } tile2.liquidType(tile5.liquidType()); if (tile5.liquid != (byte)num || tile2.liquid != (byte)num) { AddWater(x + 1, y); } tile5.liquid = (byte)num; } } if (tile5.liquid != liquid) { if (tile5.liquid == 254 && liquid == byte.MaxValue) { tile5.liquid = byte.MaxValue; kill++; } else { AddWater(x, y - 1); kill = 0; } } else { kill++; } }