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

◆ Check2x2Style()

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

Definition at line 43837 of file WorldGen.cs.

43838 {
43839 if (destroyObject)
43840 {
43841 return;
43842 }
43843 bool flag = false;
43844 int num = j;
43845 int num2;
43846 for (num2 = Main.tile[i, j].frameY / 18; num2 > 1; num2 -= 2)
43847 {
43848 }
43849 num -= num2;
43850 int num3 = Main.tile[i, j].frameX / 18;
43851 int num4 = 0;
43852 while (num3 > 1)
43853 {
43854 num3 -= 2;
43855 num4++;
43856 }
43857 num3 = i - num3;
43858 int num5 = num4 * 36;
43859 for (int k = num3; k < num3 + 2; k++)
43860 {
43861 for (int l = num; l < num + 2; l++)
43862 {
43863 if (Main.tile[k, l] == null)
43864 {
43865 Main.tile[k, l] = new Tile();
43866 }
43867 if (!Main.tile[k, l].active() || Main.tile[k, l].type != type || Main.tile[k, l].frameX != (k - num3) * 18 + num5)
43868 {
43869 flag = true;
43870 }
43871 }
43872 if (!SolidTileAllowBottomSlope(k, num + 2))
43873 {
43874 flag = true;
43875 }
43876 else
43877 {
43878 if (type != 254)
43879 {
43880 continue;
43881 }
43882 Tile tile = Main.tile[k, num + 2];
43883 if (tile != null && tile.active() && tile.type >= 0 && tile.type < TileID.Count)
43884 {
43885 ushort type2 = tile.type;
43886 if (type2 != 2 && type2 != 109 && type2 != 477 && type2 != 492)
43887 {
43888 flag = true;
43889 }
43890 }
43891 }
43892 }
43893 if (!flag)
43894 {
43895 return;
43896 }
43897 int frameX = Main.tile[i, j].frameX;
43898 destroyObject = true;
43899 for (int m = num3; m < num3 + 2; m++)
43900 {
43901 for (int n = num; n < num + 2; n++)
43902 {
43903 if (Main.tile[m, n] == null)
43904 {
43905 Main.tile[m, n] = new Tile();
43906 }
43907 if (Main.tile[m, n].type == type && Main.tile[m, n].active())
43908 {
43909 KillTile(m, n);
43910 }
43911 }
43912 }
43913 switch (type)
43914 {
43915 case 254:
43916 if (frameX < 72)
43917 {
43918 break;
43919 }
43920 if (frameX < 108)
43921 {
43922 if (genRand.Next(2) == 0)
43923 {
43924 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, 1725, genRand.Next(1, 3));
43925 }
43926 break;
43927 }
43928 if (frameX < 144)
43929 {
43930 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, 1725, genRand.Next(2, 6));
43931 break;
43932 }
43933 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, 1725, genRand.Next(5, 11));
43934 if (Main.halloween && genRand.Next(200) == 0)
43935 {
43936 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, 1799);
43937 }
43938 break;
43939 case 457:
43940 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, 3749);
43941 break;
43942 case 96:
43943 if (num4 == 0)
43944 {
43945 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, 345);
43946 }
43947 if (num4 == 1)
43948 {
43949 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, 1791);
43950 }
43951 break;
43952 case 441:
43953 {
43954 int num7 = -1;
43955 switch (num4)
43956 {
43957 case 0:
43958 num7 = 3665;
43959 break;
43960 case 1:
43961 num7 = 3666;
43962 break;
43963 case 3:
43964 num7 = 3667;
43965 break;
43966 case 7:
43967 num7 = 3668;
43968 break;
43969 case 8:
43970 num7 = 3669;
43971 break;
43972 case 9:
43973 num7 = 3670;
43974 break;
43975 case 10:
43976 num7 = 3671;
43977 break;
43978 case 11:
43979 num7 = 3672;
43980 break;
43981 case 12:
43982 num7 = 3673;
43983 break;
43984 case 13:
43985 num7 = 3674;
43986 break;
43987 case 14:
43988 num7 = 3675;
43989 break;
43990 case 15:
43991 num7 = 3676;
43992 break;
43993 case 16:
43994 num7 = 3677;
43995 break;
43996 case 17:
43997 num7 = 3678;
43998 break;
43999 case 18:
44000 num7 = 3679;
44001 break;
44002 case 19:
44003 num7 = 3680;
44004 break;
44005 case 20:
44006 num7 = 3681;
44007 break;
44008 case 21:
44009 num7 = 3682;
44010 break;
44011 case 22:
44012 num7 = 3683;
44013 break;
44014 case 28:
44015 num7 = 3684;
44016 break;
44017 case 29:
44018 num7 = 3685;
44019 break;
44020 case 30:
44021 num7 = 3686;
44022 break;
44023 case 31:
44024 num7 = 3687;
44025 break;
44026 case 32:
44027 num7 = 3688;
44028 break;
44029 case 33:
44030 num7 = 3689;
44031 break;
44032 case 34:
44033 num7 = 3690;
44034 break;
44035 case 35:
44036 num7 = 3691;
44037 break;
44038 case 37:
44039 num7 = 3692;
44040 break;
44041 case 39:
44042 num7 = 3693;
44043 break;
44044 case 41:
44045 num7 = 3694;
44046 break;
44047 case 42:
44048 num7 = 3695;
44049 break;
44050 case 43:
44051 num7 = 3696;
44052 break;
44053 case 44:
44054 num7 = 3697;
44055 break;
44056 case 45:
44057 num7 = 3698;
44058 break;
44059 case 46:
44060 num7 = 3699;
44061 break;
44062 case 47:
44063 num7 = 3700;
44064 break;
44065 case 48:
44066 num7 = 3701;
44067 break;
44068 case 49:
44069 num7 = 3702;
44070 break;
44071 case 50:
44072 num7 = 3703;
44073 break;
44074 case 51:
44075 num7 = 3704;
44076 break;
44077 }
44078 if (num7 != -1)
44079 {
44080 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, num7);
44081 }
44082 break;
44083 }
44084 case 468:
44085 {
44086 int num6 = -1;
44087 switch (num4)
44088 {
44089 case 0:
44090 num6 = 3886;
44091 break;
44092 case 1:
44093 num6 = 3887;
44094 break;
44095 case 2:
44096 num6 = 3950;
44097 break;
44098 case 3:
44099 num6 = 3976;
44100 break;
44101 case 4:
44102 num6 = -1;
44103 break;
44104 case 5:
44105 num6 = 4164;
44106 break;
44107 case 6:
44108 num6 = 4185;
44109 break;
44110 case 7:
44111 num6 = 4206;
44112 break;
44113 case 8:
44114 num6 = 4227;
44115 break;
44116 case 9:
44117 num6 = 4266;
44118 break;
44119 case 10:
44120 num6 = 4268;
44121 break;
44122 case 11:
44123 num6 = 4585;
44124 break;
44125 case 12:
44126 num6 = 4713;
44127 break;
44128 case 13:
44129 num6 = -1;
44130 break;
44131 case 14:
44132 num6 = 5167;
44133 break;
44134 case 15:
44135 num6 = 5188;
44136 break;
44137 case 16:
44138 num6 = 5209;
44139 break;
44140 }
44141 if (num6 != -1)
44142 {
44143 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, num6);
44144 }
44145 break;
44146 }
44147 }
44148 destroyObject = false;
44149 for (int num8 = num3 - 1; num8 < num3 + 3; num8++)
44150 {
44151 for (int num9 = num - 1; num9 < num + 3; num9++)
44152 {
44154 }
44155 }
44156 }
static readonly ushort Count
Definition TileID.cs:1698
static bool destroyObject
Definition WorldGen.cs:1020
static void KillTile(int i, int j, bool fail=false, bool effectOnly=false, bool noItem=false)
static UnifiedRandom genRand
Definition WorldGen.cs:1215
static void TileFrame(int i, int j, bool resetFrame=false, bool noBreak=false)
static bool SolidTileAllowBottomSlope(int i, int j)
static IEntitySource GetItemSource_FromTileBreak(int x, int y)

References Terraria.Tile.active(), Terraria.ID.TileID.Count, Terraria.Main.halloween, Terraria.Item.NewItem(), Terraria.DataStructures.Tile, Terraria.Main.tile, System.type, and Terraria.Tile.type.