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

◆ CheckBanner()

static void Terraria.WorldGen.CheckBanner ( int x,
int j,
byte type )
inlinestatic

Definition at line 37020 of file WorldGen.cs.

37021 {
37022 if (destroyObject)
37023 {
37024 return;
37025 }
37026 int num = Main.tile[x, j].frameY / 18;
37027 int num2 = 0;
37028 while (num >= 3)
37029 {
37030 num -= 3;
37031 num2++;
37032 }
37033 num = j - num;
37034 int frameX = Main.tile[x, j].frameX;
37035 bool flag = false;
37036 for (int i = 0; i < 3; i++)
37037 {
37038 if (Main.tile[x, num + i] == null)
37039 {
37040 Main.tile[x, num + i] = new Tile();
37041 }
37042 if (!Main.tile[x, num + i].active())
37043 {
37044 flag = true;
37045 }
37046 else if (Main.tile[x, num + i].type != type)
37047 {
37048 flag = true;
37049 }
37050 else if (Main.tile[x, num + i].frameY != i * 18 + num2 * 18 * 3)
37051 {
37052 flag = true;
37053 }
37054 else if (Main.tile[x, num + i].frameX != frameX)
37055 {
37056 flag = true;
37057 }
37058 }
37059 if (Main.tile[x, num - 1] == null)
37060 {
37061 Main.tile[x, num - 1] = new Tile();
37062 }
37063 Tile tile = Main.tile[x, num - 1];
37064 if (!tile.nactive())
37065 {
37066 flag = true;
37067 }
37068 bool num3 = tile.topSlope() || tile.halfBrick() || Main.tileSolid[tile.type];
37069 bool flag2 = !Main.tileSolidTop[tile.type] || (TileID.Sets.Platforms[tile.type] && (tile.halfBrick() || tile.topSlope()));
37070 bool flag3 = num3 && flag2 && !TileID.Sets.NotReallySolid[tile.type] && !tile.bottomSlope();
37071 if (TileID.Sets.Platforms[tile.type] || tile.type == 380)
37072 {
37073 flag3 = true;
37074 }
37075 if (!flag3)
37076 {
37077 flag = true;
37078 }
37079 if (!flag)
37080 {
37081 return;
37082 }
37083 destroyObject = true;
37084 for (int k = 0; k < 3; k++)
37085 {
37086 if (Main.tile[x, num + k].type == type)
37087 {
37088 KillTile(x, num + k);
37089 }
37090 }
37091 if (type == 91)
37092 {
37093 int num4 = frameX / 18;
37094 num4 += num2 * 111;
37095 if (num4 == 310)
37096 {
37097 Item.NewItem(GetItemSource_FromTileBreak(x, num + 1), x * 16, (num + 1) * 16, 32, 32, 5352);
37098 }
37099 else if (num4 >= 297)
37100 {
37101 Item.NewItem(GetItemSource_FromTileBreak(x, num + 1), x * 16, (num + 1) * 16, 32, 32, 4668 + num4);
37102 }
37103 else if (num4 >= 295)
37104 {
37105 Item.NewItem(GetItemSource_FromTileBreak(x, num + 1), x * 16, (num + 1) * 16, 32, 32, 4392 + num4);
37106 }
37107 else if (num4 >= 294)
37108 {
37109 Item.NewItem(GetItemSource_FromTileBreak(x, num + 1), x * 16, (num + 1) * 16, 32, 32, 4602);
37110 }
37111 else if (num4 >= 288)
37112 {
37113 Item.NewItem(GetItemSource_FromTileBreak(x, num + 1), x * 16, (num + 1) * 16, 32, 32, 4253 + num4);
37114 }
37115 else if (num4 >= 278)
37116 {
37117 Item.NewItem(GetItemSource_FromTileBreak(x, num + 1), x * 16, (num + 1) * 16, 32, 32, 3559 + num4);
37118 }
37119 else if (num4 >= 273)
37120 {
37121 Item.NewItem(GetItemSource_FromTileBreak(x, num + 1), x * 16, (num + 1) * 16, 32, 32, 3516 + num4);
37122 }
37123 else if (num4 >= 272)
37124 {
37125 Item.NewItem(GetItemSource_FromTileBreak(x, num + 1), x * 16, (num + 1) * 16, 32, 32, 3780);
37126 }
37127 else if (num4 >= 270)
37128 {
37129 Item.NewItem(GetItemSource_FromTileBreak(x, num + 1), x * 16, (num + 1) * 16, 32, 32, 3323 + num4);
37130 }
37131 else if (num4 >= 207)
37132 {
37133 Item.NewItem(GetItemSource_FromTileBreak(x, num + 1), x * 16, (num + 1) * 16, 32, 32, 3183 + num4);
37134 }
37135 else if (num4 >= 109)
37136 {
37137 Item.NewItem(GetItemSource_FromTileBreak(x, num + 1), x * 16, (num + 1) * 16, 32, 32, 2788 + num4);
37138 }
37139 else if (num4 >= 22)
37140 {
37141 Item.NewItem(GetItemSource_FromTileBreak(x, num + 1), x * 16, (num + 1) * 16, 32, 32, 1593 + num4);
37142 }
37143 else if (num4 >= 10 && num4 <= 15)
37144 {
37145 Item.NewItem(GetItemSource_FromTileBreak(x, num + 1), x * 16, (num + 1) * 16, 32, 32, 1441 + num4);
37146 }
37147 else if (num4 >= 16 && num4 <= 21)
37148 {
37149 Item.NewItem(GetItemSource_FromTileBreak(x, num + 1), x * 16, (num + 1) * 16, 32, 32, 1448 + num4);
37150 }
37151 else if (num4 >= 7 && num4 <= 9)
37152 {
37153 Item.NewItem(GetItemSource_FromTileBreak(x, num + 1), x * 16, (num + 1) * 16, 32, 32, 838 + num4);
37154 }
37155 else if (num4 >= 4 && num4 <= 6)
37156 {
37157 Item.NewItem(GetItemSource_FromTileBreak(x, num + 1), x * 16, (num + 1) * 16, 32, 32, 785 + num4);
37158 }
37159 else
37160 {
37161 Item.NewItem(GetItemSource_FromTileBreak(x, num + 1), x * 16, (num + 1) * 16, 32, 32, 337 + num4);
37162 }
37163 }
37164 destroyObject = false;
37165 }
static bool[] NotReallySolid
Definition TileID.cs:257
static bool[] Platforms
Definition TileID.cs:163
static bool destroyObject
Definition WorldGen.cs:1020
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.Tile.bottomSlope(), Terraria.Tile.halfBrick(), Terraria.Tile.nactive(), Terraria.Item.NewItem(), Terraria.ID.TileID.Sets.NotReallySolid, Terraria.ID.TileID.Sets.Platforms, Terraria.DataStructures.Tile, Terraria.Main.tile, Terraria.Main.tileSolid, Terraria.Main.tileSolidTop, Terraria.Tile.topSlope(), System.type, and Terraria.Tile.type.