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

◆ Check6x4Wall()

static void Terraria.WorldGen.Check6x4Wall ( int x,
int y )
inlinestatic

Definition at line 37708 of file WorldGen.cs.

37709 {
37710 if (destroyObject)
37711 {
37712 return;
37713 }
37714 bool flag = false;
37715 int type = Main.tile[x, y].type;
37716 int num = 0;
37717 int num2 = Main.tile[x, y].frameY / 18;
37718 int num3 = Main.tile[x, y].frameX / 18;
37719 num = 27 * (num3 / 6) + (num2 >> 2);
37720 num2 %= 4;
37721 num3 %= 6;
37722 int num4 = y - num2;
37723 int num5 = x - Main.tile[x, y].frameX / 18 % 6;
37724 num2 = num % 27 * 72;
37725 num3 = num / 27 * 108;
37726 for (int i = num5; i < num5 + 6; i++)
37727 {
37728 for (int j = num4; j < num4 + 4; j++)
37729 {
37730 if (Main.tile[i, j].type != type || !Main.tile[i, j].active() || Main.tile[i, j].wall <= 0 || Main.tile[i, j].frameY != num2 + (j - num4) * 18 || Main.tile[i, j].frameX != num3 + (i - num5) * 18)
37731 {
37732 flag = true;
37733 break;
37734 }
37735 }
37736 }
37737 if (!flag)
37738 {
37739 return;
37740 }
37741 destroyObject = true;
37742 bool drop = TileLoader.Drop(x, y, type);
37743 for (int k = num5; k < num5 + 6; k++)
37744 {
37745 for (int l = num4; l < num4 + 4; l++)
37746 {
37747 if (Main.tile[k, l].type == type && Main.tile[k, l].active())
37748 {
37749 KillTile(k, l);
37750 }
37751 }
37752 }
37753 using (new Item.DisableNewItemMethod(!drop))
37754 {
37755 if (type == 242)
37756 {
37757 switch (num)
37758 {
37759 case 30:
37760 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 2995);
37761 break;
37762 case 65:
37763 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 5389);
37764 break;
37765 case 64:
37766 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 5310);
37767 break;
37768 case 63:
37769 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 5308);
37770 break;
37771 case 62:
37772 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 5274);
37773 break;
37774 case 50:
37775 case 51:
37776 case 52:
37777 case 53:
37778 case 54:
37779 case 55:
37780 case 56:
37781 case 57:
37782 case 58:
37783 case 59:
37784 case 60:
37785 case 61:
37786 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 5234 + num - 50);
37787 break;
37788 case 46:
37789 case 47:
37790 case 48:
37791 case 49:
37792 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 5121 + num - 46);
37793 break;
37794 default:
37795 switch (num)
37796 {
37797 case 45:
37798 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 5085);
37799 break;
37800 case 44:
37801 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 4725);
37802 break;
37803 case 43:
37804 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 4658);
37805 break;
37806 case 37:
37807 case 38:
37808 case 39:
37809 case 40:
37810 case 41:
37811 case 42:
37812 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 4632 + num - 37);
37813 break;
37814 case 31:
37815 case 32:
37816 case 33:
37817 case 34:
37818 case 35:
37819 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 3055 + num - 31);
37820 break;
37821 default:
37822 if (num >= 27 && num <= 29)
37823 {
37824 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 2865 + num - 27);
37825 }
37826 else if (num == 36)
37827 {
37828 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 3596);
37829 }
37830 else if (num == 26)
37831 {
37832 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 2497);
37833 }
37834 else if (num == 25)
37835 {
37836 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 2495);
37837 }
37838 else if (num >= 22)
37839 {
37840 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 2281 + num - 22);
37841 }
37842 else if (num >= 17)
37843 {
37844 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1846 + num - 17);
37845 }
37846 else if (num == 16)
37847 {
37848 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1573);
37849 }
37850 else if (num >= 13)
37851 {
37852 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1500 + num - 13);
37853 }
37854 else if (num >= 6)
37855 {
37856 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1433 + num - 6);
37857 }
37858 else
37859 {
37860 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1421 + num);
37861 }
37862 break;
37863 }
37864 break;
37865 }
37866 }
37867 destroyObject = false;
37868 }
37869 }
static bool Drop(int i, int j, int type, bool includeLargeObjectDrops=true)
This serves as the central class from which tile-related functions are supported and carried out.
Definition TileLoader.cs:23
static bool destroyObject
Definition WorldGen.cs:1258
static void KillTile(int i, int j, bool fail=false, bool effectOnly=false, bool noItem=false)
static IEntitySource GetItemSource_FromTileBreak(int x, int y)

References Terraria.ModLoader.TileLoader.Drop(), Terraria.Item.NewItem(), and Terraria.Main.tile.

+ Here is the call graph for this function: