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

◆ PlaceLiquid()

static bool Terraria.WorldGen.PlaceLiquid ( int x,
int y,
byte liquidType,
byte amount )
inlinestatic

Definition at line 1371 of file WorldGen.cs.

1372 {
1373 if (!InWorld(x, y))
1374 {
1375 return false;
1376 }
1377 Tile tile = Main.tile[x, y];
1378 if (tile == null)
1379 {
1380 return false;
1381 }
1382 byte b = tile.liquidType();
1383 if (tile.nactive() && Main.tileSolid[tile.type] && !Main.tileSolidTop[tile.type])
1384 {
1385 return false;
1386 }
1387 if (tile.liquid == 0 || liquidType == b)
1388 {
1389 tile.liquidType(liquidType);
1390 if (amount + tile.liquid > 255)
1391 {
1392 amount = (byte)(255 - tile.liquid);
1393 }
1394 tile.liquid += amount;
1395 SquareTileFrame(x, y);
1396 if (Main.netMode != 0)
1397 {
1398 NetMessage.sendWater(x, y);
1399 }
1400 return true;
1401 }
1402 int liquidMergeTileType = 0;
1403 bool waterNearby = b == 0;
1404 bool lavaNearby = b == 1;
1405 bool honeyNearby = b == 2;
1406 bool shimmerNearby = b == 3;
1407 int liquidMergeType = 0;
1408 Liquid.GetLiquidMergeTypes(liquidType, out liquidMergeTileType, out liquidMergeType, waterNearby, lavaNearby, honeyNearby, shimmerNearby);
1409 if (liquidMergeTileType != 0)
1410 {
1411 tile.liquid = 0;
1412 tile.liquidType(0);
1414 SquareTileFrame(x, y);
1415 if (Main.netMode != 0)
1416 {
1417 NetMessage.SendTileSquare(-1, x - 1, y - 1, GetLiquidChangeType(liquidType, b));
1418 }
1419 return true;
1420 }
1421 return false;
1422 }
static bool PlaceTile(int i, int j, int Type, bool mute=false, bool forced=false, int plr=-1, int style=0)
static TileChangeType GetLiquidChangeType(int liquidType, int otherLiquidType)
Definition WorldGen.cs:1449
static bool InWorld(int x, int y, int fluff=0)
Definition WorldGen.cs:5816
static void SquareTileFrame(int i, int j, bool resetFrame=true)

References Terraria.WorldGen.GetLiquidChangeType(), Terraria.Liquid.GetLiquidMergeTypes(), Terraria.WorldGen.InWorld(), Terraria.Tile.liquid, Terraria.Tile.liquidType(), Terraria.Tile.nactive(), Terraria.Main.netMode, Terraria.WorldGen.PlaceTile(), Terraria.NetMessage.SendTileSquare(), Terraria.NetMessage.sendWater(), Terraria.WorldGen.SquareTileFrame(), Terraria.Main.tile, Terraria.Main.tileSolid, Terraria.Main.tileSolidTop, and Terraria.Tile.type.

Referenced by Terraria.DelegateMethods.SpreadHoney(), Terraria.DelegateMethods.SpreadLava(), and Terraria.DelegateMethods.SpreadWater().