Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ WaterCheck()

static void Terraria.WorldGen.WaterCheck ( )
inlinestatic

Definition at line 70574 of file WorldGen.cs.

70575 {
70576 Liquid.tilesIgnoreWater(ignoreSolids: true);
70577 Liquid.numLiquid = 0;
70578 LiquidBuffer.numLiquidBuffer = 0;
70579 for (int i = 1; i < Main.maxTilesX - 1; i++)
70580 {
70581 for (int num = Main.maxTilesY - 2; num > 0; num--)
70582 {
70583 Tile tile = Main.tile[i, num];
70584 tile.checkingLiquid(checkingLiquid: false);
70585 if (tile.liquid > 0 && tile.nactive() && Main.tileSolid[tile.type] && !Main.tileSolidTop[tile.type])
70586 {
70587 tile.liquid = 0;
70588 }
70589 else if (tile.liquid > 0)
70590 {
70591 if (tile.active())
70592 {
70593 if (tile.lava())
70594 {
70596 {
70597 KillTile(i, num);
70598 }
70599 }
70600 else if (TileObjectData.CheckWaterDeath(tile))
70601 {
70602 KillTile(i, num);
70603 }
70604 }
70605 Tile tile2 = Main.tile[i, num + 1];
70606 if ((!tile2.nactive() || !Main.tileSolid[tile2.type] || Main.tileSolidTop[tile2.type]) && tile2.liquid < byte.MaxValue)
70607 {
70608 if (tile2.liquid > 250)
70609 {
70610 tile2.liquid = byte.MaxValue;
70611 }
70612 else
70613 {
70614 Liquid.AddWater(i, num);
70615 }
70616 }
70617 Tile tile3 = Main.tile[i - 1, num];
70618 Tile tile4 = Main.tile[i + 1, num];
70619 if ((!tile3.nactive() || !Main.tileSolid[tile3.type] || Main.tileSolidTop[tile3.type]) && tile3.liquid != tile.liquid)
70620 {
70621 Liquid.AddWater(i, num);
70622 }
70623 else if ((!tile4.nactive() || !Main.tileSolid[tile4.type] || Main.tileSolidTop[tile4.type]) && tile4.liquid != tile.liquid)
70624 {
70625 Liquid.AddWater(i, num);
70626 }
70627 if (tile.lava())
70628 {
70629 if (tile3.liquid > 0 && !tile3.lava())
70630 {
70631 Liquid.AddWater(i, num);
70632 }
70633 else if (tile4.liquid > 0 && !tile4.lava())
70634 {
70635 Liquid.AddWater(i, num);
70636 }
70637 else if (Main.tile[i, num - 1].liquid > 0 && !Main.tile[i, num - 1].lava())
70638 {
70639 Liquid.AddWater(i, num);
70640 }
70641 else if (tile2.liquid > 0 && !tile2.lava())
70642 {
70643 Liquid.AddWater(i, num);
70644 }
70645 }
70646 }
70647 }
70648 }
70649 Liquid.tilesIgnoreWater(ignoreSolids: false);
70650 }
static bool CheckWaterDeath(int type, int style)
static bool CheckLavaDeath(int type, int style)
static void KillTile(int i, int j, bool fail=false, bool effectOnly=false, bool noItem=false)

References Terraria.Tile.active(), Terraria.Liquid.AddWater(), Terraria.Tile.checkingLiquid(), Terraria.ObjectData.TileObjectData.CheckLavaDeath(), Terraria.ObjectData.TileObjectData.CheckWaterDeath(), Terraria.Tile.lava(), Terraria.Tile.liquid, Terraria.Main.maxTilesY, Terraria.Tile.nactive(), Terraria.Main.tile, Terraria.Liquid.tilesIgnoreWater(), Terraria.Main.tileSolid, Terraria.Main.tileSolidTop, and Terraria.Tile.type.

Referenced by Terraria.IO.WorldFile.LoadWorld(), and Terraria.Liquid.UpdateLiquid().