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

◆ dropMeteor()

static void Terraria.WorldGen.dropMeteor ( )
inlinestatic

Definition at line 2739 of file WorldGen.cs.

2740 {
2741 bool flag = true;
2742 if (Main.netMode == 1)
2743 {
2744 return;
2745 }
2746 for (int i = 0; i < 255; i++)
2747 {
2748 if (Main.player[i].active)
2749 {
2750 flag = false;
2751 break;
2752 }
2753 }
2754 int num = 0;
2755 double num2 = (double)Main.maxTilesX / 4200.0;
2756 int num3 = (int)(400.0 * num2);
2757 for (int j = 5; j < Main.maxTilesX - 5; j++)
2758 {
2759 for (int k = 5; (double)k < Main.worldSurface; k++)
2760 {
2761 if (Main.tile[j, k].active() && Main.tile[j, k].type == 37)
2762 {
2763 num++;
2764 if (num > num3)
2765 {
2766 return;
2767 }
2768 }
2769 }
2770 }
2771 double num4 = 600.0;
2772 int num5 = 0;
2773 while (!flag)
2774 {
2775 double num6 = (double)Main.maxTilesX * 0.08;
2776 int num7 = Main.rand.Next(150, Main.maxTilesX - 150);
2777 while ((double)num7 > (double)Main.spawnTileX - num6 && (double)num7 < (double)Main.spawnTileX + num6)
2778 {
2779 num7 = Main.rand.Next(150, Main.maxTilesX - 150);
2780 }
2781 for (int l = (int)(Main.worldSurface * 0.3); l < Main.maxTilesY; l++)
2782 {
2783 Tile tile = Main.tile[num7, l];
2784 if (!tile.active() || !Main.tileSolid[tile.type] || TileID.Sets.Platforms[tile.type])
2785 {
2786 continue;
2787 }
2788 int num8 = 0;
2789 int num9 = 15;
2790 for (int m = num7 - num9; m < num7 + num9; m++)
2791 {
2792 for (int n = l - num9; n < l + num9; n++)
2793 {
2794 if (SolidTile(m, n))
2795 {
2796 num8++;
2797 if (Main.tile[m, n].type == 189 || Main.tile[m, n].type == 202)
2798 {
2799 num8 -= 100;
2800 }
2801 }
2802 else if (Main.tile[m, n].liquid > 0)
2803 {
2804 num8--;
2805 }
2806 }
2807 }
2808 if ((double)num8 >= num4)
2809 {
2810 flag = meteor(num7, l);
2811 if (!flag)
2812 {
2813 }
2814 }
2815 else
2816 {
2817 num4 -= 0.5;
2818 }
2819 break;
2820 }
2821 num5++;
2822 if (num4 < 100.0 || num5 >= Main.maxTilesX * 5)
2823 {
2824 break;
2825 }
2826 }
2827 }
static bool[] Platforms
Definition TileID.cs:163
static bool meteor(int i, int j, bool ignorePlayers=false)
Definition WorldGen.cs:2829

References Terraria.Tile.active(), Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.WorldGen.meteor(), Terraria.Main.netMode, Terraria.ID.TileID.Sets.Platforms, Terraria.Main.player, Terraria.Main.rand, Terraria.Enums.SolidTile, Terraria.Main.spawnTileX, Terraria.Main.tile, Terraria.Main.tileSolid, Terraria.Tile.type, and Terraria.Main.worldSurface.

Referenced by Terraria.Main.HandleMeteorFall().