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

◆ DungeonPitTrap()

static bool Terraria.WorldGen.DungeonPitTrap ( int i,
int j,
ushort tileType,
int wallType )
inlinestatic

Definition at line 29339 of file WorldGen.cs.

29340 {
29341 int num = 30;
29342 int num2 = j;
29343 int num3 = num2;
29344 int num4 = genRand.Next(8, 19);
29345 int num5 = genRand.Next(19, 46);
29346 int num6 = num4 + genRand.Next(6, 10);
29347 int num7 = num5 + genRand.Next(6, 10);
29348 if (!Main.wallDungeon[Main.tile[i, num2].wall])
29349 {
29350 return false;
29351 }
29352 if (Main.tile[i, num2].active())
29353 {
29354 return false;
29355 }
29356 for (int k = num2; k < Main.maxTilesY; k++)
29357 {
29358 if (k > Main.maxTilesY - 300)
29359 {
29360 return false;
29361 }
29362 if (Main.tile[i, k].active() && SolidTile(i, k))
29363 {
29364 if (Main.tile[i, k].type == 48)
29365 {
29366 return false;
29367 }
29368 num2 = k;
29369 break;
29370 }
29371 }
29372 if (!Main.wallDungeon[Main.tile[i - num4, num2].wall] || !Main.wallDungeon[Main.tile[i + num4, num2].wall])
29373 {
29374 return false;
29375 }
29376 bool flag = true;
29377 for (int l = num2; l < num2 + num; l++)
29378 {
29379 flag = true;
29380 for (int m = i - num4; m <= i + num4; m++)
29381 {
29382 Tile tile = Main.tile[m, l];
29383 if (tile.active() && Main.tileDungeon[tile.type])
29384 {
29385 flag = false;
29386 }
29387 }
29388 if (flag)
29389 {
29390 num2 = l;
29391 break;
29392 }
29393 }
29394 for (int n = i - num4; n <= i + num4; n++)
29395 {
29396 for (int num8 = num2; num8 <= num2 + num5; num8++)
29397 {
29398 Tile tile2 = Main.tile[n, num8];
29399 if (tile2.active() && (Main.tileDungeon[tile2.type] || tile2.type == GenVars.crackedType))
29400 {
29401 return false;
29402 }
29403 }
29404 }
29405 bool flag2 = false;
29406 if (GenVars.dungeonLake)
29407 {
29408 flag2 = true;
29409 GenVars.dungeonLake = false;
29410 }
29411 else if (genRand.Next(8) == 0)
29412 {
29413 flag2 = true;
29414 }
29415 for (int num9 = i - num4; num9 <= i + num4; num9++)
29416 {
29417 for (int num10 = num3; num10 <= num2 + num5; num10++)
29418 {
29419 if (Main.tileDungeon[Main.tile[num9, num10].type])
29420 {
29421 Main.tile[num9, num10].type = GenVars.crackedType;
29422 Main.tile[num9, num10].wall = (ushort)wallType;
29423 }
29424 }
29425 }
29426 for (int num11 = i - num6; num11 <= i + num6; num11++)
29427 {
29428 for (int num12 = num3; num12 <= num2 + num7; num12++)
29429 {
29430 Main.tile[num11, num12].lava(lava: false);
29431 Main.tile[num11, num12].liquid = 0;
29432 if (!Main.wallDungeon[Main.tile[num11, num12].wall] && Main.tile[num11, num12].type != GenVars.crackedType)
29433 {
29434 Main.tile[num11, num12].Clear(TileDataType.Slope);
29435 Main.tile[num11, num12].type = tileType;
29436 Main.tile[num11, num12].active(active: true);
29437 if (num11 > i - num6 && num11 < i + num6 && num12 < num2 + num7)
29438 {
29439 Main.tile[num11, num12].wall = (ushort)wallType;
29440 }
29441 }
29442 }
29443 }
29444 for (int num13 = i - num4; num13 <= i + num4; num13++)
29445 {
29446 for (int num14 = num3; num14 <= num2 + num5; num14++)
29447 {
29448 if (Main.tile[num13, num14].type != GenVars.crackedType)
29449 {
29450 if (flag2)
29451 {
29452 Main.tile[num13, num14].liquid = byte.MaxValue;
29453 }
29454 if (num13 == i - num4 || num13 == i + num4 || num14 == num2 + num5)
29455 {
29456 Main.tile[num13, num14].type = 48;
29457 }
29458 else if ((num13 == i - num4 + 1 && num14 % 2 == 0) || (num13 == i + num4 - 1 && num14 % 2 == 0) || (num14 == num2 + num5 - 1 && num13 % 2 == 0))
29459 {
29460 Main.tile[num13, num14].type = 48;
29461 }
29462 else
29463 {
29464 Main.tile[num13, num14].active(active: false);
29465 }
29466 }
29467 }
29468 }
29469 return true;
29470 }
static UnifiedRandom genRand
Definition WorldGen.cs:1215

References Terraria.Tile.active(), Terraria.WorldBuilding.GenVars.crackedType, Terraria.WorldBuilding.GenVars.dungeonLake, Terraria.Main.maxTilesY, Terraria.Enums.SolidTile, Terraria.Main.tile, Terraria.Main.tileDungeon, Terraria.Tile.type, and Terraria.Main.wallDungeon.