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

◆ HellHouse()

static void Terraria.WorldGen.HellHouse ( int i,
int j,
byte type = 76,
byte wall = 13 )
inlinestatic

Definition at line 24800 of file WorldGen.cs.

24801 {
24802 int num = genRand.Next(8, 20);
24803 int num2 = genRand.Next(1, 3);
24804 int num3 = genRand.Next(4, 13);
24805 int num4 = j;
24806 for (int k = 0; k < num2; k++)
24807 {
24808 int num5 = genRand.Next(5, 9);
24809 HellRoom(i, num4, num, num5, type, wall);
24810 num4 -= num5;
24811 }
24812 num4 = j;
24813 for (int l = 0; l < num3; l++)
24814 {
24815 int num6 = genRand.Next(5, 9);
24816 num4 += num6;
24817 HellRoom(i, num4, num, num6, type, wall);
24818 }
24819 for (int m = i - num / 2; m <= i + num / 2; m++)
24820 {
24821 for (num4 = j; num4 < Main.maxTilesY && ((Main.tile[m, num4].active() && (Main.tile[m, num4].type == 76 || Main.tile[m, num4].type == 75)) || Main.tile[i, num4].wall == 13 || Main.tile[i, num4].wall == 14); num4++)
24822 {
24823 }
24824 int num7 = 6 + genRand.Next(3);
24825 while (num4 < Main.maxTilesY && !Main.tile[m, num4].active())
24826 {
24827 num7--;
24828 Main.tile[m, num4].active(active: true);
24829 Main.tile[m, num4].type = 57;
24830 num4++;
24831 if (num7 <= 0)
24832 {
24833 break;
24834 }
24835 }
24836 }
24837 int num8 = 0;
24838 int num9 = 0;
24839 for (num4 = j; num4 < Main.maxTilesY && ((Main.tile[i, num4].active() && (Main.tile[i, num4].type == 76 || Main.tile[i, num4].type == 75)) || Main.tile[i, num4].wall == 13 || Main.tile[i, num4].wall == 14); num4++)
24840 {
24841 }
24842 num4--;
24843 num9 = num4;
24844 while ((Main.tile[i, num4].active() && (Main.tile[i, num4].type == 76 || Main.tile[i, num4].type == 75)) || Main.tile[i, num4].wall == 13 || Main.tile[i, num4].wall == 14)
24845 {
24846 num4--;
24847 if (!Main.tile[i, num4].active() || (Main.tile[i, num4].type != 76 && Main.tile[i, num4].type != 75))
24848 {
24849 continue;
24850 }
24851 int num10 = genRand.Next(i - num / 2 + 1, i + num / 2 - 1);
24852 int num11 = genRand.Next(i - num / 2 + 1, i + num / 2 - 1);
24853 if (num10 > num11)
24854 {
24855 int num12 = num10;
24856 num10 = num11;
24857 num11 = num12;
24858 }
24859 if (num10 == num11)
24860 {
24861 if (num10 < i)
24862 {
24863 num11++;
24864 }
24865 else
24866 {
24867 num10--;
24868 }
24869 }
24870 for (int n = num10; n <= num11; n++)
24871 {
24872 if (Main.tile[n, num4 - 1].wall == 13)
24873 {
24874 Main.tile[n, num4].wall = 13;
24875 }
24876 if (Main.tile[n, num4 - 1].wall == 14)
24877 {
24878 Main.tile[n, num4].wall = 14;
24879 }
24880 Main.tile[n, num4].type = 19;
24881 Main.tile[n, num4].active(active: true);
24882 }
24883 num4--;
24884 }
24885 num8 = num4;
24886 double num13 = (double)((num9 - num8) * num) * 0.02;
24887 for (int num14 = 0; (double)num14 < num13; num14++)
24888 {
24889 int num15 = genRand.Next(i - num / 2, i + num / 2 + 1);
24890 int num16 = genRand.Next(num8, num9);
24891 int num17 = genRand.Next(3, 8);
24892 for (int num18 = num15 - num17; num18 <= num15 + num17; num18++)
24893 {
24894 for (int num19 = num16 - num17; num19 <= num16 + num17; num19++)
24895 {
24896 double num20 = Math.Abs(num18 - num15);
24897 double num21 = Math.Abs(num19 - num16);
24898 if (!(Math.Sqrt(num20 * num20 + num21 * num21) < (double)num17 * 0.4))
24899 {
24900 continue;
24901 }
24902 try
24903 {
24904 if (Main.tile[num18, num19].type == 76 || Main.tile[num18, num19].type == 19)
24905 {
24906 Main.tile[num18, num19].active(active: false);
24907 }
24908 Main.tile[num18, num19].wall = 0;
24909 }
24910 catch
24911 {
24912 }
24913 }
24914 }
24915 }
24916 }
static double Sqrt(double d)
static double Abs(double value)
static void HellRoom(int i, int j, int width, int height, byte type=76, byte wall=13)
static UnifiedRandom genRand
Definition WorldGen.cs:1215

References System.Math.Abs(), Terraria.Main.maxTilesY, System.Math.Sqrt(), Terraria.Main.tile, and System.type.