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

◆ Check3x3Wall()

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

Definition at line 35434 of file WorldGen.cs.

35435 {
35436 if (destroyObject)
35437 {
35438 return;
35439 }
35440 bool flag = false;
35441 Tile tile = Main.tile[x, y];
35442 if (tile == null)
35443 {
35444 return;
35445 }
35446 int type = tile.type;
35447 int num = 0;
35448 int num2 = 0;
35449 int num3 = tile.frameX / 18;
35450 while (num3 >= 3)
35451 {
35452 num3 -= 3;
35453 num++;
35454 }
35455 int num4 = x - num3;
35456 int num5 = tile.frameY / 18;
35457 while (num5 >= 3)
35458 {
35459 num5 -= 3;
35460 num2++;
35461 }
35462 int num6 = y - num5;
35463 num5 = num2 * 54;
35464 num3 = num * 54;
35465 for (int i = num4; i < num4 + 3; i++)
35466 {
35467 for (int j = num6; j < num6 + 3; j++)
35468 {
35469 Tile tile2 = Main.tile[i, j];
35470 if (tile2 != null && (tile2.type != type || !tile2.active() || tile2.wall <= 0 || tile2.frameX != num3 + (i - num4) * 18 || tile2.frameY != num5 + (j - num6) * 18))
35471 {
35472 flag = true;
35473 break;
35474 }
35475 }
35476 }
35477 if (!flag)
35478 {
35479 return;
35480 }
35481 destroyObject = true;
35482 for (int k = num4; k < num4 + 3; k++)
35483 {
35484 for (int l = num6; l < num6 + 3; l++)
35485 {
35486 if (Main.tile[k, l] != null && Main.tile[k, l].type == type && Main.tile[k, l].active())
35487 {
35488 KillTile(k, l);
35489 }
35490 }
35491 }
35492 switch (type)
35493 {
35494 case 240:
35495 num += num2 * 36;
35496 switch (num)
35497 {
35498 case 37:
35499 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1856);
35500 break;
35501 case 36:
35502 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1855);
35503 break;
35504 case 38:
35505 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1960);
35506 break;
35507 case 39:
35508 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1961);
35509 break;
35510 case 40:
35511 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1962);
35512 break;
35513 case 33:
35514 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1574);
35515 break;
35516 case 34:
35517 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1575);
35518 break;
35519 case 35:
35520 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1576);
35521 break;
35522 case 18:
35523 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1419);
35524 break;
35525 case 19:
35526 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1420);
35527 break;
35528 case 20:
35529 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1427);
35530 break;
35531 case 21:
35532 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1428);
35533 break;
35534 case 54:
35535 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 2489);
35536 break;
35537 case 55:
35538 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 2589);
35539 break;
35540 case 56:
35541 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 3357);
35542 break;
35543 case 57:
35544 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 3358);
35545 break;
35546 case 58:
35547 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 3359);
35548 break;
35549 case 59:
35550 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 3595);
35551 break;
35552 case 60:
35553 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 3867);
35554 break;
35555 case 61:
35556 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 3866);
35557 break;
35558 case 62:
35559 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 3868);
35560 break;
35561 case 69:
35562 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 4660);
35563 break;
35564 case 70:
35565 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 4723);
35566 break;
35567 case 71:
35568 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 4724);
35569 break;
35570 case 72:
35571 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 4783);
35572 break;
35573 case 73:
35574 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 4958);
35575 break;
35576 case 74:
35577 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 5087);
35578 break;
35579 case 75:
35580 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 5108);
35581 break;
35582 case 92:
35583 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 5388);
35584 break;
35585 case 76:
35586 case 77:
35587 case 78:
35588 case 79:
35589 case 80:
35590 case 81:
35591 case 82:
35592 case 83:
35593 case 84:
35594 case 85:
35595 case 86:
35596 case 87:
35597 case 88:
35598 case 89:
35599 case 90:
35600 case 91:
35601 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 5218 + num - 76);
35602 break;
35603 default:
35604 if (num >= 63 && num <= 68)
35605 {
35606 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 4626 + num - 63);
35607 }
35608 else if (num >= 41 && num <= 45)
35609 {
35610 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 2114 + num - 41);
35611 }
35612 else if (num >= 46 && num <= 53)
35613 {
35614 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 2442 + num - 46);
35615 }
35616 else if (num >= 22 && num <= 25)
35617 {
35618 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1440 + num - 22);
35619 }
35620 else if (num >= 26 && num <= 29)
35621 {
35622 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1496 + num - 26);
35623 }
35624 else if (num >= 30 && num <= 32)
35625 {
35626 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1538 + num - 30);
35627 }
35628 else
35629 {
35630 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1360 + num);
35631 }
35632 break;
35633 }
35634 break;
35635 case 440:
35636 {
35637 int num7 = -1;
35638 int num8 = -1;
35639 switch (num)
35640 {
35641 case 0:
35642 num7 = 3644;
35643 num8 = 1526;
35644 break;
35645 case 1:
35646 num7 = 3645;
35647 num8 = 1524;
35648 break;
35649 case 2:
35650 num7 = 3646;
35651 num8 = 1525;
35652 break;
35653 case 3:
35654 num7 = 3647;
35655 num8 = 1523;
35656 break;
35657 case 4:
35658 num7 = 3648;
35659 num8 = 1522;
35660 break;
35661 case 5:
35662 num7 = 3649;
35663 num8 = 1527;
35664 break;
35665 case 6:
35666 num7 = 3650;
35667 num8 = 3643;
35668 break;
35669 }
35670 if (num7 != -1)
35671 {
35672 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, num7);
35673 }
35674 if (num8 != -1 && num2 == 1)
35675 {
35676 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, num8);
35677 }
35678 break;
35679 }
35680 }
35681 destroyObject = false;
35682 }
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.Item.NewItem(), Terraria.Main.tile, System.type, and Terraria.Tile.type.