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

◆ Check4x2()

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

Definition at line 38537 of file WorldGen.cs.

38538 {
38539 if (destroyObject)
38540 {
38541 return;
38542 }
38543 bool flag = false;
38544 int num = i;
38545 num = ((type != 487) ? (num + Main.tile[i, j].frameX / 18 * -1) : (num + Main.tile[i, j].frameX / 18 % 4 * -1));
38546 if ((type == 79 || type == 90) && Main.tile[i, j].frameX >= 72)
38547 {
38548 num += 4;
38549 }
38550 int num2 = Main.tile[i, j].frameY / 18;
38551 int num3 = 0;
38552 while (num2 > 1)
38553 {
38554 num2 -= 2;
38555 num3++;
38556 }
38557 num2 = j - num2;
38558 if (type == 487)
38559 {
38560 num3 = Main.tile[i, j].frameX / 72;
38561 }
38562 for (int k = num; k < num + 4; k++)
38563 {
38564 for (int l = num2; l < num2 + 2; l++)
38565 {
38566 int num4 = (k - num) * 18;
38567 int num5 = (l - num2) * 18;
38568 if ((type == 79 || type == 90) && Main.tile[i, j].frameX >= 72)
38569 {
38570 num4 = (k - num + 4) * 18;
38571 }
38572 if (type == 487)
38573 {
38574 num4 += num3 * 72;
38575 }
38576 else
38577 {
38578 num5 += num3 * 36;
38579 }
38580 if (Main.tile[k, l] == null)
38581 {
38582 Main.tile[k, l] = new Tile();
38583 }
38584 if (!Main.tile[k, l].active() || Main.tile[k, l].type != type || Main.tile[k, l].frameX != num4 || Main.tile[k, l].frameY != num5)
38585 {
38586 flag = true;
38587 }
38588 }
38589 if (Main.tile[k, num2 + 2] == null)
38590 {
38591 Main.tile[k, num2 + 2] = new Tile();
38592 }
38593 if (!SolidTileAllowBottomSlope(k, num2 + 2) && (!Main.tile[k, num2 + 2].active() || !TileID.Sets.Platforms[Main.tile[k, num2 + 2].type]))
38594 {
38595 flag = true;
38596 }
38597 }
38598 if (!flag)
38599 {
38600 return;
38601 }
38602 destroyObject = true;
38603 for (int m = num; m < num + 4; m++)
38604 {
38605 for (int n = num2; n < num2 + 3; n++)
38606 {
38607 if (Main.tile[m, n].type == type && Main.tile[m, n].active())
38608 {
38609 KillTile(m, n);
38610 }
38611 }
38612 }
38613 if (type == 79)
38614 {
38615 int num6 = 0;
38616 switch (num3)
38617 {
38618 case 0:
38619 num6 = 224;
38620 break;
38621 case 4:
38622 num6 = 920;
38623 break;
38624 case 9:
38625 case 10:
38626 case 11:
38627 case 12:
38628 num6 = 1710 + num3;
38629 break;
38630 default:
38631 num6 = ((num3 >= 5 && num3 <= 8) ? (1465 + num3) : ((num3 >= 13 && num3 <= 18) ? (2066 + num3 - 13) : (num3 switch
38632 {
38633 19 => 2139,
38634 20 => 2140,
38635 21 => 2231,
38636 22 => 2520,
38637 23 => 2538,
38638 24 => 2553,
38639 25 => 2568,
38640 26 => 2669,
38641 27 => 2811,
38642 28 => 3162,
38643 29 => 3164,
38644 30 => 3163,
38645 31 => 3897,
38646 32 => 3932,
38647 33 => 3959,
38648 34 => 4146,
38649 35 => 4167,
38650 36 => 4188,
38651 37 => 4209,
38652 38 => 4299,
38653 39 => 4567,
38654 40 => 5149,
38655 41 => 5170,
38656 42 => 5191,
38657 _ => num3 + 643,
38658 })));
38659 break;
38660 }
38661 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, num6);
38662 }
38663 if (type == 487)
38664 {
38665 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, GetItemDrop_PicnicTables(num3));
38666 }
38667 if (type == 90)
38668 {
38669 int type2 = 0;
38670 switch (num3)
38671 {
38672 case 0:
38673 type2 = 336;
38674 break;
38675 case 1:
38676 case 2:
38677 case 3:
38678 case 4:
38679 case 5:
38680 case 6:
38681 case 7:
38682 case 8:
38683 case 9:
38684 case 10:
38685 type2 = 2072 + num3 - 1;
38686 break;
38687 default:
38688 if (num3 >= 11 && num3 <= 15)
38689 {
38690 type2 = 2124 + num3 - 11;
38691 break;
38692 }
38693 switch (num3)
38694 {
38695 case 16:
38696 type2 = 2232;
38697 break;
38698 case 17:
38699 type2 = 2519;
38700 break;
38701 case 18:
38702 type2 = 2537;
38703 break;
38704 case 19:
38705 type2 = 2552;
38706 break;
38707 case 20:
38708 type2 = 2567;
38709 break;
38710 case 21:
38711 type2 = 2658;
38712 break;
38713 case 22:
38714 type2 = 2659;
38715 break;
38716 case 23:
38717 type2 = 2660;
38718 break;
38719 case 24:
38720 type2 = 2661;
38721 break;
38722 case 25:
38723 type2 = 2662;
38724 break;
38725 case 26:
38726 type2 = 2663;
38727 break;
38728 case 27:
38729 type2 = 2810;
38730 break;
38731 case 28:
38732 type2 = 3159;
38733 break;
38734 case 29:
38735 type2 = 3161;
38736 break;
38737 case 30:
38738 type2 = 3160;
38739 break;
38740 case 31:
38741 type2 = 3895;
38742 break;
38743 case 32:
38744 type2 = 3931;
38745 break;
38746 case 33:
38747 type2 = 3958;
38748 break;
38749 case 34:
38750 type2 = 4145;
38751 break;
38752 case 35:
38753 type2 = 4166;
38754 break;
38755 case 36:
38756 type2 = 4187;
38757 break;
38758 case 37:
38759 type2 = 4208;
38760 break;
38761 case 38:
38762 type2 = 4298;
38763 break;
38764 case 39:
38765 type2 = 4566;
38766 break;
38767 case 40:
38768 type2 = 5148;
38769 break;
38770 case 41:
38771 type2 = 5169;
38772 break;
38773 case 42:
38774 type2 = 5190;
38775 break;
38776 }
38777 break;
38778 }
38779 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, type2);
38780 }
38781 destroyObject = false;
38782 for (int num7 = num - 1; num7 < num + 4; num7++)
38783 {
38784 for (int num8 = num2 - 1; num8 < num2 + 4; num8++)
38785 {
38787 }
38788 }
38789 }
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 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.Item.NewItem(), Terraria.ID.TileID.Sets.Platforms, Terraria.DataStructures.Tile, Terraria.Main.tile, and System.type.