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

◆ DelWater()

static void Terraria.Liquid.DelWater ( int l)
inlinestatic

Definition at line 1472 of file Liquid.cs.

1473 {
1474 int num = Main.liquid[l].x;
1475 int num2 = Main.liquid[l].y;
1476 Tile tile = Main.tile[num - 1, num2];
1477 Tile tile2 = Main.tile[num + 1, num2];
1478 Tile tile3 = Main.tile[num, num2 + 1];
1479 Tile tile4 = Main.tile[num, num2];
1480 byte b = 2;
1481 if (tile4.liquid < b)
1482 {
1483 tile4.liquid = 0;
1484 if (tile.liquid < b)
1485 {
1486 tile.liquid = 0;
1487 }
1488 else
1489 {
1490 AddWater(num - 1, num2);
1491 }
1492 if (tile2.liquid < b)
1493 {
1494 tile2.liquid = 0;
1495 }
1496 else
1497 {
1498 AddWater(num + 1, num2);
1499 }
1500 }
1501 else if (tile4.liquid < 20)
1502 {
1503 if ((tile.liquid < tile4.liquid && (!tile.nactive() || !Main.tileSolid[tile.type] || Main.tileSolidTop[tile.type])) || (tile2.liquid < tile4.liquid && (!tile2.nactive() || !Main.tileSolid[tile2.type] || Main.tileSolidTop[tile2.type])) || (tile3.liquid < byte.MaxValue && (!tile3.nactive() || !Main.tileSolid[tile3.type] || Main.tileSolidTop[tile3.type])))
1504 {
1505 tile4.liquid = 0;
1506 }
1507 }
1508 else if (tile3.liquid < byte.MaxValue && (!tile3.nactive() || !Main.tileSolid[tile3.type] || Main.tileSolidTop[tile3.type]) && !stuck && (!Main.tile[num, num2].nactive() || !Main.tileSolid[Main.tile[num, num2].type] || Main.tileSolidTop[Main.tile[num, num2].type]))
1509 {
1510 Main.liquid[l].kill = 0;
1511 return;
1512 }
1513 if (tile4.liquid < 250 && Main.tile[num, num2 - 1].liquid > 0)
1514 {
1515 AddWater(num, num2 - 1);
1516 }
1517 if (tile4.liquid == 0)
1518 {
1519 tile4.liquidType(0);
1520 }
1521 else
1522 {
1523 if (tile2.liquid > 0 && tile2.liquid < 250 && (!tile2.nactive() || !Main.tileSolid[tile2.type] || Main.tileSolidTop[tile2.type]) && tile4.liquid != tile2.liquid)
1524 {
1525 AddWater(num + 1, num2);
1526 }
1527 if (tile.liquid > 0 && tile.liquid < 250 && (!tile.nactive() || !Main.tileSolid[tile.type] || Main.tileSolidTop[tile.type]) && tile4.liquid != tile.liquid)
1528 {
1529 AddWater(num - 1, num2);
1530 }
1531 if (tile4.lava())
1532 {
1533 LavaCheck(num, num2);
1534 for (int i = num - 1; i <= num + 1; i++)
1535 {
1536 for (int j = num2 - 1; j <= num2 + 1; j++)
1537 {
1538 Tile tile5 = Main.tile[i, j];
1539 if (!tile5.active())
1540 {
1541 continue;
1542 }
1543 if (tile5.type == 2 || tile5.type == 23 || tile5.type == 109 || tile5.type == 199 || tile5.type == 477 || tile5.type == 492)
1544 {
1545 tile5.type = 0;
1546 WorldGen.SquareTileFrame(i, j);
1547 if (Main.netMode == 2)
1548 {
1549 NetMessage.SendTileSquare(-1, num, num2, 3);
1550 }
1551 }
1552 else if (tile5.type == 60 || tile5.type == 70 || tile5.type == 661 || tile5.type == 662)
1553 {
1554 tile5.type = 59;
1555 WorldGen.SquareTileFrame(i, j);
1556 if (Main.netMode == 2)
1557 {
1558 NetMessage.SendTileSquare(-1, num, num2, 3);
1559 }
1560 }
1561 }
1562 }
1563 }
1564 else if (tile4.honey())
1565 {
1566 HoneyCheck(num, num2);
1567 }
1568 else if (tile4.shimmer())
1569 {
1570 ShimmerCheck(num, num2);
1571 }
1572 }
1573 if (Main.netMode == 2)
1574 {
1575 NetSendLiquid(num, num2);
1576 }
1577 numLiquid--;
1578 Main.tile[Main.liquid[l].x, Main.liquid[l].y].checkingLiquid(checkingLiquid: false);
1579 Main.liquid[l].x = Main.liquid[numLiquid].x;
1580 Main.liquid[l].y = Main.liquid[numLiquid].y;
1581 Main.liquid[l].kill = Main.liquid[numLiquid].kill;
1582 if (Main.tileAlch[tile4.type])
1583 {
1584 WorldGen.CheckAlch(num, num2);
1585 }
1586 else if (tile4.type == 518)
1587 {
1588 if (quickFall)
1589 {
1590 WorldGen.CheckLilyPad(num, num2);
1591 }
1592 else if (Main.tile[num, num2 + 1].liquid < byte.MaxValue || Main.tile[num, num2 - 1].liquid > 0)
1593 {
1594 WorldGen.SquareTileFrame(num, num2);
1595 }
1596 else
1597 {
1598 WorldGen.CheckLilyPad(num, num2);
1599 }
1600 }
1601 }
static void ShimmerCheck(int x, int y)
Definition Liquid.cs:1467
static void HoneyCheck(int x, int y)
Definition Liquid.cs:1462
static bool quickFall
Definition Liquid.cs:31
static bool stuck
Definition Liquid.cs:29
static void AddWater(int x, int y)
Definition Liquid.cs:1160
static int numLiquid
Definition Liquid.cs:27
static void NetSendLiquid(int x, int y)
Definition Liquid.cs:55
static void LavaCheck(int x, int y)
Definition Liquid.cs:1447

References Terraria.Liquid.AddWater(), Terraria.WorldGen.CheckAlch(), Terraria.WorldGen.CheckLilyPad(), Terraria.Liquid.HoneyCheck(), Terraria.Liquid.LavaCheck(), Terraria.Main.liquid, Terraria.Tile.liquid, Terraria.Tile.nactive(), Terraria.Main.netMode, Terraria.Liquid.NetSendLiquid(), Terraria.Liquid.numLiquid, Terraria.Liquid.quickFall, Terraria.NetMessage.SendTileSquare(), Terraria.Liquid.ShimmerCheck(), Terraria.WorldGen.SquareTileFrame(), Terraria.Liquid.stuck, Terraria.Main.tile, Terraria.Main.tileAlch, Terraria.Main.tileSolid, Terraria.Main.tileSolidTop, and Terraria.Tile.type.

Referenced by Terraria.Liquid.UpdateLiquid().