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

◆ Check4x2()

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

Definition at line 40299 of file WorldGen.cs.

40300 {
40301 if (destroyObject)
40302 {
40303 return;
40304 }
40305 bool flag = false;
40306 int num = i;
40307 num = ((type != 487) ? (num + Main.tile[i, j].frameX / 18 * -1) : (num + Main.tile[i, j].frameX / 18 % 4 * -1));
40308 if ((type == 79 || type == 90) && Main.tile[i, j].frameX >= 72)
40309 {
40310 num += 4;
40311 }
40312 int num2 = Main.tile[i, j].frameY / 18;
40313 int num3 = 0;
40314 while (num2 > 1)
40315 {
40316 num2 -= 2;
40317 num3++;
40318 }
40319 num2 = j - num2;
40320 if (type == 487)
40321 {
40322 num3 = Main.tile[i, j].frameX / 72;
40323 }
40324 for (int k = num; k < num + 4; k++)
40325 {
40326 for (int l = num2; l < num2 + 2; l++)
40327 {
40328 int num4 = (k - num) * 18;
40329 int num5 = (l - num2) * 18;
40330 if ((type == 79 || type == 90) && Main.tile[i, j].frameX >= 72)
40331 {
40332 num4 = (k - num + 4) * 18;
40333 }
40334 if (type == 487)
40335 {
40336 num4 += num3 * 72;
40337 }
40338 else
40339 {
40340 num5 += num3 * 36;
40341 }
40342 if (Main.tile[k, l] == null)
40343 {
40344 Main.tile[k, l] = default(Tile);
40345 }
40346 if (!Main.tile[k, l].active() || Main.tile[k, l].type != type || Main.tile[k, l].frameX != num4 || Main.tile[k, l].frameY != num5)
40347 {
40348 flag = true;
40349 }
40350 }
40351 if (Main.tile[k, num2 + 2] == null)
40352 {
40353 Main.tile[k, num2 + 2] = default(Tile);
40354 }
40355 if (!SolidTileAllowBottomSlope(k, num2 + 2) && (!Main.tile[k, num2 + 2].active() || !TileID.Sets.Platforms[Main.tile[k, num2 + 2].type]))
40356 {
40357 flag = true;
40358 }
40359 }
40360 if (!flag)
40361 {
40362 return;
40363 }
40364 destroyObject = true;
40365 bool drop = TileLoader.Drop(i, j, type);
40366 for (int m = num; m < num + 4; m++)
40367 {
40368 for (int n = num2; n < num2 + 3; n++)
40369 {
40370 if (Main.tile[m, n].type == type && Main.tile[m, n].active())
40371 {
40372 KillTile(m, n);
40373 }
40374 }
40375 }
40376 using (new Item.DisableNewItemMethod(!drop))
40377 {
40378 if (type == 79)
40379 {
40380 int num6 = 0;
40381 switch (num3)
40382 {
40383 case 0:
40384 num6 = 224;
40385 break;
40386 case 4:
40387 num6 = 920;
40388 break;
40389 case 9:
40390 case 10:
40391 case 11:
40392 case 12:
40393 num6 = 1710 + num3;
40394 break;
40395 case 5:
40396 case 6:
40397 case 7:
40398 case 8:
40399 num6 = 1465 + num3;
40400 break;
40401 default:
40402 num6 = ((num3 >= 13 && num3 <= 18) ? (2066 + num3 - 13) : (num3 switch
40403 {
40404 19 => 2139,
40405 20 => 2140,
40406 21 => 2231,
40407 22 => 2520,
40408 23 => 2538,
40409 24 => 2553,
40410 25 => 2568,
40411 26 => 2669,
40412 27 => 2811,
40413 28 => 3162,
40414 29 => 3164,
40415 30 => 3163,
40416 31 => 3897,
40417 32 => 3932,
40418 33 => 3959,
40419 34 => 4146,
40420 35 => 4167,
40421 36 => 4188,
40422 37 => 4209,
40423 38 => 4299,
40424 39 => 4567,
40425 40 => 5149,
40426 41 => 5170,
40427 42 => 5191,
40428 _ => num3 + 643,
40429 }));
40430 break;
40431 }
40432 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, num6);
40433 }
40434 if (type == 487)
40435 {
40436 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, GetItemDrop_PicnicTables(num3));
40437 }
40438 if (type == 90)
40439 {
40440 int type2 = 0;
40441 switch (num3)
40442 {
40443 case 0:
40444 type2 = 336;
40445 break;
40446 case 1:
40447 case 2:
40448 case 3:
40449 case 4:
40450 case 5:
40451 case 6:
40452 case 7:
40453 case 8:
40454 case 9:
40455 case 10:
40456 type2 = 2072 + num3 - 1;
40457 break;
40458 case 11:
40459 case 12:
40460 case 13:
40461 case 14:
40462 case 15:
40463 type2 = 2124 + num3 - 11;
40464 break;
40465 default:
40466 switch (num3)
40467 {
40468 case 16:
40469 type2 = 2232;
40470 break;
40471 case 17:
40472 type2 = 2519;
40473 break;
40474 case 18:
40475 type2 = 2537;
40476 break;
40477 case 19:
40478 type2 = 2552;
40479 break;
40480 case 20:
40481 type2 = 2567;
40482 break;
40483 case 21:
40484 type2 = 2658;
40485 break;
40486 case 22:
40487 type2 = 2659;
40488 break;
40489 case 23:
40490 type2 = 2660;
40491 break;
40492 case 24:
40493 type2 = 2661;
40494 break;
40495 case 25:
40496 type2 = 2662;
40497 break;
40498 case 26:
40499 type2 = 2663;
40500 break;
40501 case 27:
40502 type2 = 2810;
40503 break;
40504 case 28:
40505 type2 = 3159;
40506 break;
40507 case 29:
40508 type2 = 3161;
40509 break;
40510 case 30:
40511 type2 = 3160;
40512 break;
40513 case 31:
40514 type2 = 3895;
40515 break;
40516 case 32:
40517 type2 = 3931;
40518 break;
40519 case 33:
40520 type2 = 3958;
40521 break;
40522 case 34:
40523 type2 = 4145;
40524 break;
40525 case 35:
40526 type2 = 4166;
40527 break;
40528 case 36:
40529 type2 = 4187;
40530 break;
40531 case 37:
40532 type2 = 4208;
40533 break;
40534 case 38:
40535 type2 = 4298;
40536 break;
40537 case 39:
40538 type2 = 4566;
40539 break;
40540 case 40:
40541 type2 = 5148;
40542 break;
40543 case 41:
40544 type2 = 5169;
40545 break;
40546 case 42:
40547 type2 = 5190;
40548 break;
40549 }
40550 break;
40551 }
40552 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, type2);
40553 }
40554 destroyObject = false;
40555 for (int num7 = num - 1; num7 < num + 4; num7++)
40556 {
40557 for (int num8 = num2 - 1; num8 < num2 + 4; num8++)
40558 {
40560 }
40561 }
40562 }
40563 }
static bool[] Platforms
Definition TileID.cs:219
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 void TileFrame(int i, int j, bool resetFrame=false, bool noBreak=false)
static bool SolidTileAllowBottomSlope(int i, int j)
static int GetItemDrop_PicnicTables(int style)
static IEntitySource GetItemSource_FromTileBreak(int x, int y)

References Terraria.ModLoader.TileLoader.Drop(), Terraria.Item.NewItem(), Terraria.ID.TileID.Sets.Platforms, and Terraria.Main.tile.

+ Here is the call graph for this function: