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

◆ CactusFrame()

static void Terraria.WorldGen.CactusFrame ( int i,
int j )
inlinestatic

Definition at line 47566 of file WorldGen.cs.

47567 {
47568 try
47569 {
47570 int num = j;
47571 int num2 = i;
47572 if (CheckCactus(i, j))
47573 {
47574 return;
47575 }
47576 while (Main.tile[num2, num].active() && Main.tile[num2, num].type == 80)
47577 {
47578 num++;
47579 if (Main.tile[num2, num] == null)
47580 {
47581 return;
47582 }
47583 if (!Main.tile[num2, num].active() || Main.tile[num2, num].type != 80)
47584 {
47585 if (Main.tile[num2 - 1, num] != null && Main.tile[num2 - 1, num].active() && Main.tile[num2 - 1, num].type == 80 && Main.tile[num2 - 1, num - 1].active() && Main.tile[num2 - 1, num - 1].type == 80 && num2 >= i)
47586 {
47587 num2--;
47588 }
47589 if (Main.tile[num2 + 1, num] != null && Main.tile[num2 + 1, num].active() && Main.tile[num2 + 1, num].type == 80 && Main.tile[num2 + 1, num - 1].active() && Main.tile[num2 + 1, num - 1].type == 80 && num2 <= i)
47590 {
47591 num2++;
47592 }
47593 }
47594 }
47595 num--;
47596 int num3 = i - num2;
47597 num2 = i;
47598 num = j;
47599 if (Main.tile[i - 2, j] == null)
47600 {
47601 return;
47602 }
47603 int type = Main.tile[i - 2, j].type;
47604 if (Main.tile[i - 1, j] == null)
47605 {
47606 return;
47607 }
47608 int num4 = Main.tile[i - 1, j].type;
47609 if (Main.tile[i + 1, j] == null)
47610 {
47611 return;
47612 }
47613 int num5 = Main.tile[i + 1, j].type;
47614 if (Main.tile[i, j - 1] == null)
47615 {
47616 return;
47617 }
47618 int num6 = Main.tile[i, j - 1].type;
47619 if (num6 == 227)
47620 {
47621 num6 = 80;
47622 }
47623 int num7 = Main.tile[i, j + 1].type;
47624 int num8 = Main.tile[i - 1, j + 1].type;
47625 int num9 = Main.tile[i + 1, j + 1].type;
47626 if (!Main.tile[i - 1, j].active())
47627 {
47628 num4 = -1;
47629 }
47630 if (!Main.tile[i + 1, j].active())
47631 {
47632 num5 = -1;
47633 }
47634 if (!Main.tile[i, j - 1].active())
47635 {
47636 num6 = -1;
47637 }
47638 if (!Main.tile[i, j + 1].active())
47639 {
47640 num7 = -1;
47641 }
47642 if (!Main.tile[i - 1, j + 1].active())
47643 {
47644 num8 = -1;
47645 }
47646 if (!Main.tile[i + 1, j + 1].active())
47647 {
47648 num9 = -1;
47649 }
47650 short num10 = Main.tile[i, j].frameX;
47651 short num11 = Main.tile[i, j].frameY;
47652 switch (num3)
47653 {
47654 case 0:
47655 if (num6 != 80)
47656 {
47657 if (num4 == 80 && num5 == 80 && num8 != 80 && num9 != 80 && type != 80)
47658 {
47659 num10 = 90;
47660 num11 = 0;
47661 }
47662 else if (num4 == 80 && num8 != 80 && type != 80)
47663 {
47664 num10 = 72;
47665 num11 = 0;
47666 }
47667 else if (num5 == 80 && num9 != 80)
47668 {
47669 num10 = 18;
47670 num11 = 0;
47671 }
47672 else
47673 {
47674 num10 = 0;
47675 num11 = 0;
47676 }
47677 }
47678 else if (num4 == 80 && num5 == 80 && num8 != 80 && num9 != 80 && type != 80)
47679 {
47680 num10 = 90;
47681 num11 = 36;
47682 }
47683 else if (num4 == 80 && num8 != 80 && type != 80)
47684 {
47685 num10 = 72;
47686 num11 = 36;
47687 }
47688 else if (num5 == 80 && num9 != 80)
47689 {
47690 num10 = 18;
47691 num11 = 36;
47692 }
47693 else if (num7 >= 0 && Main.tileSolid[num7])
47694 {
47695 num10 = 0;
47696 num11 = 36;
47697 }
47698 else
47699 {
47700 num10 = 0;
47701 num11 = 18;
47702 }
47703 break;
47704 case -1:
47705 if (num5 == 80)
47706 {
47707 if (num6 != 80 && num7 != 80)
47708 {
47709 num10 = 108;
47710 num11 = 36;
47711 }
47712 else if (num7 != 80)
47713 {
47714 num10 = 54;
47715 num11 = 36;
47716 }
47717 else if (num6 != 80)
47718 {
47719 num10 = 54;
47720 num11 = 0;
47721 }
47722 else
47723 {
47724 num10 = 54;
47725 num11 = 18;
47726 }
47727 }
47728 else if (num6 != 80)
47729 {
47730 num10 = 54;
47731 num11 = 0;
47732 }
47733 else
47734 {
47735 num10 = 54;
47736 num11 = 18;
47737 }
47738 break;
47739 case 1:
47740 if (num4 == 80)
47741 {
47742 if (num6 != 80 && num7 != 80)
47743 {
47744 num10 = 108;
47745 num11 = 18;
47746 }
47747 else if (num7 != 80)
47748 {
47749 num10 = 36;
47750 num11 = 36;
47751 }
47752 else if (num6 != 80)
47753 {
47754 num10 = 36;
47755 num11 = 0;
47756 }
47757 else
47758 {
47759 num10 = 36;
47760 num11 = 18;
47761 }
47762 }
47763 else if (num6 != 80)
47764 {
47765 num10 = 36;
47766 num11 = 0;
47767 }
47768 else
47769 {
47770 num10 = 36;
47771 num11 = 18;
47772 }
47773 break;
47774 }
47775 if (num10 != Main.tile[i, j].frameX || num11 != Main.tile[i, j].frameY)
47776 {
47777 Main.tile[i, j].frameX = num10;
47778 Main.tile[i, j].frameY = num11;
47779 DiamondTileFrame(i, j);
47780 }
47781 }
47782 catch
47783 {
47784 Main.tile[i, j].frameX = 0;
47785 Main.tile[i, j].frameY = 0;
47786 }
47787 }
static void DiamondTileFrame(int i, int j)
static bool CheckCactus(int i, int j)

References Terraria.Main.tile, Terraria.Main.tileSolid, and System.type.