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

◆ HellFort()

static void Terraria.WorldGen.HellFort ( int i,
int j,
ushort tileType = 75,
byte wallType = 14 )
inlinestatic

Definition at line 24351 of file WorldGen.cs.

24352 {
24353 int[] array = new int[5];
24354 int[] array2 = new int[5];
24355 int[] array3 = new int[10];
24356 int[] array4 = new int[10];
24357 int num = 8;
24358 int num2 = 20;
24359 if (drunkWorldGen)
24360 {
24361 num /= 2;
24362 num2 *= 2;
24363 }
24364 array[2] = i - genRand.Next(num / 2, num2 / 2);
24365 array2[2] = i + genRand.Next(num / 2, num2 / 2);
24366 array[3] = array2[2];
24367 array2[3] = array[3] + genRand.Next(num, num2);
24368 array[4] = array2[3];
24369 array2[4] = array[4] + genRand.Next(num, num2);
24370 array2[1] = array[2];
24371 array[1] = array2[1] - genRand.Next(num, num2);
24372 array2[0] = array[1];
24373 array[0] = array2[0] - genRand.Next(num, num2);
24374 num = 6;
24375 num2 = 12;
24376 array3[3] = j - genRand.Next(num, num2);
24377 array4[3] = j;
24378 for (int k = 4; k < 10; k++)
24379 {
24380 array3[k] = array4[k - 1];
24381 array4[k] = array3[k] + genRand.Next(num, num2);
24382 }
24383 for (int num3 = 2; num3 >= 0; num3--)
24384 {
24385 array4[num3] = array3[num3 + 1];
24386 array3[num3] = array4[num3] - genRand.Next(num, num2);
24387 }
24388 bool flag = false;
24389 bool flag2 = false;
24390 bool[,] array5 = new bool[5, 10];
24391 int num4 = 3;
24392 int num5 = 3;
24393 for (int l = 0; l < 2; l++)
24394 {
24395 if (genRand.Next(3) == 0 || drunkWorldGen)
24396 {
24397 flag = true;
24398 int num6 = genRand.Next(10);
24399 if (num6 < num4)
24400 {
24401 num4 = num6;
24402 }
24403 if (num6 > num5)
24404 {
24405 num5 = num6;
24406 }
24407 int num7 = 1;
24408 if (genRand.Next(2) == 0 || drunkWorldGen)
24409 {
24410 array5[0, num6] = true;
24411 array5[1, num6] = true;
24412 num7 = 0;
24413 }
24414 else
24415 {
24416 array5[1, num6] = true;
24417 }
24418 int num8 = genRand.Next(2);
24419 if (num8 == 0)
24420 {
24421 num8 = -1;
24422 }
24423 int num9 = genRand.Next(10);
24424 while (num9 > 0 && num6 >= 0 && num6 < 10)
24425 {
24426 array5[num7, num6] = true;
24427 num6 += num8;
24428 }
24429 }
24430 if (genRand.Next(3) == 0 || drunkWorldGen)
24431 {
24432 flag2 = true;
24433 int num10 = genRand.Next(10);
24434 if (num10 < num4)
24435 {
24436 num4 = num10;
24437 }
24438 if (num10 > num5)
24439 {
24440 num5 = num10;
24441 }
24442 int num11 = 3;
24443 if (genRand.Next(2) == 0 || drunkWorldGen)
24444 {
24445 array5[3, num10] = true;
24446 array5[4, num10] = true;
24447 num11 = 4;
24448 }
24449 else
24450 {
24451 array5[3, num10] = true;
24452 }
24453 int num12 = genRand.Next(2);
24454 if (num12 == 0)
24455 {
24456 num12 = -1;
24457 }
24458 int num13 = genRand.Next(10);
24459 while (num13 > 0 && num10 >= 0 && num10 < 10)
24460 {
24461 array5[num11, num10] = true;
24462 num10 += num12;
24463 }
24464 }
24465 }
24466 for (int m = 0; m < 5; m++)
24467 {
24468 int num14 = array[m];
24469 bool flag3 = false;
24470 if (num14 < 10 || num14 > Main.maxTilesX - 10)
24471 {
24472 flag3 = true;
24473 }
24474 else
24475 {
24476 for (int n = Main.UnderworldLayer; n < Main.maxTilesY; n++)
24477 {
24478 if (Main.tile[num14, n].wall > 0)
24479 {
24480 flag3 = true;
24481 }
24482 }
24483 }
24484 if (flag3)
24485 {
24486 for (int num15 = 0; num15 < 10; num15++)
24487 {
24488 array5[m, num15] = false;
24489 }
24490 }
24491 }
24492 int num16 = genRand.Next(10);
24493 if (num16 < num4)
24494 {
24495 num4 = num16;
24496 }
24497 num16 = genRand.Next(10);
24498 if (num16 > num5)
24499 {
24500 num5 = num16;
24501 }
24502 if (!flag && !flag2)
24503 {
24504 while (num5 - num4 < 5)
24505 {
24506 num16 = genRand.Next(10);
24507 if (num16 < num4)
24508 {
24509 num4 = num16;
24510 }
24511 num16 = genRand.Next(10);
24512 if (num16 > num5)
24513 {
24514 num5 = num16;
24515 }
24516 }
24517 }
24518 for (int num17 = num4; num17 <= num5; num17++)
24519 {
24520 array5[2, num17] = true;
24521 }
24522 for (int num18 = 0; num18 < 5; num18++)
24523 {
24524 for (int num19 = 0; num19 < 10; num19++)
24525 {
24526 if (array5[num18, num19] && (array3[num19] < Main.UnderworldLayer || array4[num19] > Main.maxTilesY - 20))
24527 {
24528 array5[num18, num19] = false;
24529 }
24530 }
24531 }
24532 for (int num20 = 0; num20 < 5; num20++)
24533 {
24534 for (int num21 = 0; num21 < 10; num21++)
24535 {
24536 if (!array5[num20, num21])
24537 {
24538 continue;
24539 }
24540 for (int num22 = array[num20]; num22 <= array2[num20]; num22++)
24541 {
24542 for (int num23 = array3[num21]; num23 <= array4[num21]; num23++)
24543 {
24544 if (num22 < 10)
24545 {
24546 break;
24547 }
24548 if (num22 > Main.maxTilesX - 10)
24549 {
24550 break;
24551 }
24552 Main.tile[num22, num23].liquid = 0;
24553 if (num22 == array[num20] || num22 == array2[num20] || num23 == array3[num21] || num23 == array4[num21])
24554 {
24555 Main.tile[num22, num23].active(active: true);
24556 Main.tile[num22, num23].type = tileType;
24557 Main.tile[num22, num23].halfBrick(halfBrick: false);
24558 Main.tile[num22, num23].slope(0);
24559 }
24560 else
24561 {
24562 Main.tile[num22, num23].wall = wallType;
24563 Main.tile[num22, num23].active(active: false);
24564 }
24565 }
24566 }
24567 }
24568 }
24569 int style = 19;
24570 int style2 = 13;
24571 for (int num24 = 0; num24 < 4; num24++)
24572 {
24573 bool[] array6 = new bool[10];
24574 bool flag4 = false;
24575 for (int num25 = 0; num25 < 10; num25++)
24576 {
24577 if (array5[num24, num25] && array5[num24 + 1, num25])
24578 {
24579 array6[num25] = true;
24580 flag4 = true;
24581 }
24582 }
24583 while (flag4)
24584 {
24585 int num26 = genRand.Next(10);
24586 if (array6[num26])
24587 {
24588 flag4 = false;
24589 Main.tile[array2[num24], array4[num26] - 1].active(active: false);
24590 Main.tile[array2[num24], array4[num26] - 2].active(active: false);
24591 Main.tile[array2[num24], array4[num26] - 3].active(active: false);
24592 Main.tile[array2[num24], array4[num26] - 1].wall = wallType;
24593 Main.tile[array2[num24], array4[num26] - 2].wall = wallType;
24594 Main.tile[array2[num24], array4[num26] - 3].wall = wallType;
24595 PlaceTile(array2[num24], array4[num26] - 1, 10, mute: true, forced: false, -1, style);
24596 }
24597 }
24598 }
24599 for (int num27 = 0; num27 < 5; num27++)
24600 {
24601 for (int num28 = 0; num28 < 10; num28++)
24602 {
24603 if (!array5[num27, num28])
24604 {
24605 continue;
24606 }
24607 if (num28 > 0 && array5[num27, num28 - 1])
24608 {
24609 int num29 = genRand.Next(array[num27] + 2, array2[num27] - 1);
24610 int num30 = genRand.Next(array[num27] + 2, array2[num27] - 1);
24611 int num31 = 0;
24613 {
24614 num29 = genRand.Next(array[num27] + 2, array2[num27] - 1);
24615 num30 = genRand.Next(array[num27] + 2, array2[num27] - 1);
24616 num31++;
24617 if (num31 > 10000)
24618 {
24619 break;
24620 }
24621 }
24622 if (num31 > 10000)
24623 {
24624 break;
24625 }
24626 for (int num32 = num29; num32 <= num30 && num32 >= 20 && num32 <= Main.maxTilesX - 20; num32++)
24627 {
24628 Main.tile[num32, array3[num28]].active(active: false);
24630 Main.tile[num32, array3[num28]].wall = wallType;
24631 }
24632 }
24633 if (num27 < 4 && array5[num27 + 1, num28] && genRand.Next(3) == 0)
24634 {
24635 Main.tile[array2[num27], array4[num28] - 1].active(active: false);
24636 Main.tile[array2[num27], array4[num28] - 2].active(active: false);
24637 Main.tile[array2[num27], array4[num28] - 3].active(active: false);
24638 Main.tile[array2[num27], array4[num28] - 1].wall = wallType;
24639 Main.tile[array2[num27], array4[num28] - 2].wall = wallType;
24640 Main.tile[array2[num27], array4[num28] - 3].wall = wallType;
24641 PlaceTile(array2[num27], array4[num28] - 1, 10, mute: true, forced: false, -1, style);
24642 }
24643 }
24644 }
24645 bool flag5 = false;
24646 for (int num33 = 0; num33 < 5; num33++)
24647 {
24648 bool[] array7 = new bool[10];
24649 for (int num34 = 0; num34 < 10; num34++)
24650 {
24651 if (array5[num33, num34])
24652 {
24653 flag5 = true;
24654 array7[num34] = true;
24655 }
24656 }
24657 if (!flag5)
24658 {
24659 continue;
24660 }
24661 bool flag6 = false;
24662 for (int num35 = 0; num35 < 10; num35++)
24663 {
24664 if (array7[num35])
24665 {
24666 if (!Main.tile[array[num33] - 1, array4[num35] - 1].active() && !Main.tile[array[num33] - 1, array4[num35] - 2].active() && !Main.tile[array[num33] - 1, array4[num35] - 3].active() && Main.tile[array[num33] - 1, array4[num35] - 1].liquid == 0 && Main.tile[array[num33] - 1, array4[num35] - 2].liquid == 0 && Main.tile[array[num33] - 1, array4[num35] - 3].liquid == 0)
24667 {
24668 flag6 = true;
24669 }
24670 else
24671 {
24672 array7[num35] = false;
24673 }
24674 }
24675 }
24676 while (flag6)
24677 {
24678 int num36 = genRand.Next(10);
24679 if (array7[num36])
24680 {
24681 flag6 = false;
24682 Main.tile[array[num33], array4[num36] - 1].active(active: false);
24683 Main.tile[array[num33], array4[num36] - 2].active(active: false);
24684 Main.tile[array[num33], array4[num36] - 3].active(active: false);
24685 PlaceTile(array[num33], array4[num36] - 1, 10, mute: true, forced: false, -1, style);
24686 }
24687 }
24688 break;
24689 }
24690 bool flag7 = false;
24691 for (int num37 = 4; num37 >= 0; num37--)
24692 {
24693 bool[] array8 = new bool[10];
24694 for (int num38 = 0; num38 < 10; num38++)
24695 {
24696 if (array5[num37, num38])
24697 {
24698 flag7 = true;
24699 array8[num38] = true;
24700 }
24701 }
24702 if (flag7)
24703 {
24704 bool flag8 = false;
24705 for (int num39 = 0; num39 < 10; num39++)
24706 {
24707 if (array8[num39])
24708 {
24709 if (num37 < 20 || num37 > Main.maxTilesX - 20)
24710 {
24711 break;
24712 }
24713 if (!Main.tile[array2[num37] + 1, array4[num39] - 1].active() && !Main.tile[array2[num37] + 1, array4[num39] - 2].active() && !Main.tile[array2[num37] + 1, array4[num39] - 3].active() && Main.tile[array2[num37] + 1, array4[num39] - 1].liquid == 0 && Main.tile[array2[num37] + 1, array4[num39] - 2].liquid == 0 && Main.tile[array2[num37] + 1, array4[num39] - 3].liquid == 0)
24714 {
24715 flag8 = true;
24716 }
24717 else
24718 {
24719 array8[num39] = false;
24720 }
24721 }
24722 }
24723 while (flag8)
24724 {
24725 int num40 = genRand.Next(10);
24726 if (array8[num40])
24727 {
24728 flag8 = false;
24729 Main.tile[array2[num37], array4[num40] - 1].active(active: false);
24730 Main.tile[array2[num37], array4[num40] - 2].active(active: false);
24731 Main.tile[array2[num37], array4[num40] - 3].active(active: false);
24732 PlaceTile(array2[num37], array4[num40] - 1, 10, mute: true, forced: false, -1, style);
24733 }
24734 }
24735 break;
24736 }
24737 }
24738 bool flag9 = false;
24739 for (int num41 = 0; num41 < 10; num41++)
24740 {
24741 bool[] array9 = new bool[10];
24742 for (int num42 = 0; num42 < 5; num42++)
24743 {
24744 if (array5[num42, num41])
24745 {
24746 flag9 = true;
24747 array9[num42] = true;
24748 }
24749 }
24750 if (!flag9)
24751 {
24752 continue;
24753 }
24754 bool flag10 = true;
24755 while (flag10)
24756 {
24757 int num43 = genRand.Next(5);
24758 if (!array9[num43])
24759 {
24760 continue;
24761 }
24762 int num44 = genRand.Next(array[num43] + 2, array2[num43] - 1);
24763 int num45 = genRand.Next(array[num43] + 2, array2[num43] - 1);
24764 int num46 = 0;
24766 {
24767 num44 = genRand.Next(array[num43] + 2, array2[num43] - 1);
24768 num45 = genRand.Next(array[num43] + 2, array2[num43] - 1);
24769 num46++;
24770 if (num46 > 10000)
24771 {
24772 break;
24773 }
24774 }
24775 if (num46 > 10000)
24776 {
24777 break;
24778 }
24779 for (int num47 = num44; num47 <= num45 && num47 >= 10 && num47 <= Main.maxTilesX - 10; num47++)
24780 {
24781 if (Main.tile[num47, array3[num41] - 1].active() || Main.tile[num47, array3[num41] - 1].liquid > 0)
24782 {
24783 flag10 = false;
24784 }
24785 }
24786 if (flag10)
24787 {
24788 for (int num48 = num44; num48 <= num45 && num48 >= 10 && num48 <= Main.maxTilesX - 10; num48++)
24789 {
24790 Main.tile[num48, array3[num41]].active(active: false);
24792 }
24793 }
24794 flag10 = false;
24795 }
24796 break;
24797 }
24798 }
static bool PlaceTile(int i, int j, int Type, bool mute=false, bool forced=false, int plr=-1, int style=0)
static UnifiedRandom genRand
Definition WorldGen.cs:1215
static bool drunkWorldGen
Definition WorldGen.cs:1154

References System.array, Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.Main.tile, and Terraria.Main.UnderworldLayer.