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

◆ PlaceJunglePlant()

static void Terraria.WorldGen.PlaceJunglePlant ( int X2,
int Y2,
ushort type,
int styleX,
int styleY )
inlinestatic

Definition at line 39047 of file WorldGen.cs.

39048 {
39049 if (styleY > 0 || type == 236 || type == 238)
39050 {
39051 int num = Y2;
39052 if (type == 95 || type == 126)
39053 {
39054 num++;
39055 }
39056 if (X2 < 5 || X2 > Main.maxTilesX - 5 || num < 5 || num > Main.maxTilesY - 5)
39057 {
39058 return;
39059 }
39060 bool flag = true;
39061 for (int i = X2 - 1; i < X2 + 1; i++)
39062 {
39063 for (int j = num - 1; j < num + 1; j++)
39064 {
39065 if (Main.tile[i, j] == null)
39066 {
39067 Main.tile[i, j] = new Tile();
39068 }
39069 Tile tile = Main.tile[i, j];
39070 if (tile.active() && tile.type != 61 && tile.type != 62 && tile.type != 655 && tile.type != 69 && tile.type != 74 && (type != 236 || tile.type != 233) && (type != 238 || tile.type != 233) && (tile.type != 185 || tile.frameY != 0))
39071 {
39072 flag = false;
39073 }
39074 if (type == 98 && tile.liquid > 0)
39075 {
39076 flag = false;
39077 }
39078 }
39079 if (Main.tile[i, num + 1] == null)
39080 {
39081 Main.tile[i, num + 1] = new Tile();
39082 }
39083 if (!SolidTile(i, num + 1) || Main.tile[i, num + 1].type != 60)
39084 {
39085 flag = false;
39086 }
39087 }
39088 if (!flag)
39089 {
39090 return;
39091 }
39092 for (int k = X2 - 1; k < X2 + 1; k++)
39093 {
39094 for (int l = num - 1; l < num + 1; l++)
39095 {
39096 if (Main.tile[k, l] != null && Main.tile[k, l].active())
39097 {
39099 }
39100 }
39101 }
39102 short num2 = 36;
39103 if (type == 236 || type == 238)
39104 {
39105 num2 = 0;
39106 }
39107 short num3 = (short)(36 * styleX);
39108 Main.tile[X2 - 1, num - 1].active(active: true);
39109 Main.tile[X2 - 1, num - 1].frameY = num2;
39110 Main.tile[X2 - 1, num - 1].frameX = num3;
39111 Main.tile[X2 - 1, num - 1].type = type;
39112 Main.tile[X2, num - 1].active(active: true);
39113 Main.tile[X2, num - 1].frameY = num2;
39114 Main.tile[X2, num - 1].frameX = (short)(18 + num3);
39115 Main.tile[X2, num - 1].type = type;
39116 Main.tile[X2 - 1, num].active(active: true);
39117 Main.tile[X2 - 1, num].frameY = (short)(num2 + 18);
39118 Main.tile[X2 - 1, num].frameX = num3;
39119 Main.tile[X2 - 1, num].type = type;
39120 Main.tile[X2, num].active(active: true);
39121 Main.tile[X2, num].frameY = (short)(num2 + 18);
39122 Main.tile[X2, num].frameX = (short)(18 + num3);
39123 Main.tile[X2, num].type = type;
39124 }
39125 else
39126 {
39127 if (X2 < 5 || X2 > Main.maxTilesX - 5 || Y2 < 5 || Y2 > Main.maxTilesY - 5)
39128 {
39129 return;
39130 }
39131 bool flag2 = true;
39132 for (int m = X2 - 1; m < X2 + 2; m++)
39133 {
39134 for (int n = Y2 - 1; n < Y2 + 1; n++)
39135 {
39136 if (Main.tile[m, n] == null)
39137 {
39138 Main.tile[m, n] = new Tile();
39139 }
39140 if (Main.tile[m, n].active() && Main.tile[m, n].type != 61 && Main.tile[m, n].type != 62 && Main.tile[m, n].type != 69 && Main.tile[m, n].type != 655 && Main.tile[m, n].type != 74 && (Main.tile[m, n].type != 185 || Main.tile[m, n].frameY != 0))
39141 {
39142 flag2 = false;
39143 }
39144 }
39145 if (Main.tile[m, Y2 + 1] == null)
39146 {
39147 Main.tile[m, Y2 + 1] = new Tile();
39148 }
39149 if (!SolidTile(m, Y2 + 1) || Main.tile[m, Y2 + 1].type != 60)
39150 {
39151 flag2 = false;
39152 }
39153 }
39154 if (!flag2)
39155 {
39156 return;
39157 }
39158 for (int num4 = X2 - 1; num4 < X2 + 2; num4++)
39159 {
39160 for (int num5 = Y2 - 1; num5 < Y2 + 1; num5++)
39161 {
39162 if (Main.tile[num4, num5] != null && Main.tile[num4, num5].active())
39163 {
39165 }
39166 }
39167 }
39168 short num6 = (short)(54 * styleX);
39169 Main.tile[X2 - 1, Y2 - 1].active(active: true);
39170 Main.tile[X2 - 1, Y2 - 1].frameY = 0;
39171 Main.tile[X2 - 1, Y2 - 1].frameX = num6;
39172 Main.tile[X2 - 1, Y2 - 1].type = type;
39173 Main.tile[X2, Y2 - 1].active(active: true);
39174 Main.tile[X2, Y2 - 1].frameY = 0;
39175 Main.tile[X2, Y2 - 1].frameX = (short)(num6 + 18);
39176 Main.tile[X2, Y2 - 1].type = type;
39177 Main.tile[X2 + 1, Y2 - 1].active(active: true);
39178 Main.tile[X2 + 1, Y2 - 1].frameY = 0;
39179 Main.tile[X2 + 1, Y2 - 1].frameX = (short)(num6 + 36);
39180 Main.tile[X2 + 1, Y2 - 1].type = type;
39181 Main.tile[X2 - 1, Y2].active(active: true);
39182 Main.tile[X2 - 1, Y2].frameY = 18;
39183 Main.tile[X2 - 1, Y2].frameX = num6;
39184 Main.tile[X2 - 1, Y2].type = type;
39185 Main.tile[X2, Y2].active(active: true);
39186 Main.tile[X2, Y2].frameY = 18;
39187 Main.tile[X2, Y2].frameX = (short)(num6 + 18);
39188 Main.tile[X2, Y2].type = type;
39189 Main.tile[X2 + 1, Y2].active(active: true);
39190 Main.tile[X2 + 1, Y2].frameY = 18;
39191 Main.tile[X2 + 1, Y2].frameX = (short)(num6 + 36);
39192 Main.tile[X2 + 1, Y2].type = type;
39193 }
39194 }
static void KillTile(int i, int j, bool fail=false, bool effectOnly=false, bool noItem=false)

References Terraria.Tile.active(), Terraria.Tile.frameY, Terraria.Tile.liquid, Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.Enums.SolidTile, Terraria.DataStructures.Tile, Terraria.Main.tile, System.type, and Terraria.Tile.type.