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

◆ CheckJunglePlant()

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

Definition at line 39196 of file WorldGen.cs.

39197 {
39198 if (destroyObject)
39199 {
39200 return;
39201 }
39202 if (Main.tile[i, j].frameY >= 36 || Main.tile[i, j].type == 236 || Main.tile[i, j].type == 238)
39203 {
39204 bool flag = false;
39205 int num = Main.tile[i, j].frameX / 18;
39206 int num2 = 0;
39207 while (num > 1)
39208 {
39209 num -= 2;
39210 num2++;
39211 }
39212 num = i - num;
39213 int num3 = 36;
39214 if (type == 236 || type == 238)
39215 {
39216 num3 = 0;
39217 }
39218 int num4;
39219 for (num4 = Main.tile[i, j].frameY / 18; num4 > 1; num4 -= 2)
39220 {
39221 }
39222 num4 = j - num4;
39223 int num5 = num2 * 36;
39224 for (int k = num; k < num + 2; k++)
39225 {
39226 for (int l = num4; l < num4 + 2; l++)
39227 {
39228 if (Main.tile[k, l] == null)
39229 {
39230 Main.tile[k, l] = new Tile();
39231 }
39232 if (!Main.tile[k, l].active() || Main.tile[k, l].type != type || Main.tile[k, l].frameX != (k - num) * 18 + num5 || Main.tile[k, l].frameY != (l - num4) * 18 + num3)
39233 {
39234 flag = true;
39235 }
39236 }
39237 if (Main.tile[k, num4 + 2] == null)
39238 {
39239 Main.tile[k, num4 + 2] = new Tile();
39240 }
39241 if (!SolidTile(k, num4 + 2) || Main.tile[k, num4 + 2].type != 60)
39242 {
39243 flag = true;
39244 }
39245 }
39246 if (!flag)
39247 {
39248 return;
39249 }
39250 if (type == 238)
39251 {
39252 float num6 = i * 16;
39253 float num7 = j * 16;
39254 float num8 = -1f;
39255 int plr = 0;
39256 for (int m = 0; m < 255; m++)
39257 {
39258 float num9 = Math.Abs(Main.player[m].position.X - num6) + Math.Abs(Main.player[m].position.Y - num7);
39259 if (num9 < num8 || num8 == -1f)
39260 {
39261 plr = m;
39262 num8 = num9;
39263 }
39264 }
39265 if (num8 / 16f < 50f)
39266 {
39267 NPC.SpawnOnPlayer(plr, 262);
39268 }
39269 }
39270 if (type == 236)
39271 {
39272 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, 1291);
39273 }
39274 _ = Main.tile[i, j].frameX;
39275 destroyObject = true;
39276 for (int n = num; n < num + 2; n++)
39277 {
39278 for (int num10 = num4; num10 < num4 + 2; num10++)
39279 {
39280 if (Main.tile[n, num10] == null)
39281 {
39282 Main.tile[n, num10] = new Tile();
39283 }
39284 if (Main.tile[n, num10].type == type && Main.tile[n, num10].active())
39285 {
39286 KillTile(n, num10);
39287 }
39288 }
39289 }
39290 destroyObject = false;
39291 return;
39292 }
39293 bool flag2 = false;
39294 int num11 = j;
39295 num11 += Main.tile[i, j].frameY / 18 * -1;
39296 int num12 = Main.tile[i, j].frameX / 18;
39297 int num13 = 0;
39298 while (num12 > 2)
39299 {
39300 num12 -= 3;
39301 num13++;
39302 }
39303 num12 = i - num12;
39304 int num14 = num13 * 54;
39305 for (int num15 = num12; num15 < num12 + 3; num15++)
39306 {
39307 for (int num16 = num11; num16 < num11 + 2; num16++)
39308 {
39309 if (Main.tile[num15, num16] == null)
39310 {
39311 Main.tile[num15, num16] = new Tile();
39312 }
39313 if (!Main.tile[num15, num16].active() || Main.tile[num15, num16].type != type || Main.tile[num15, num16].frameX != (num15 - num12) * 18 + num14 || Main.tile[num15, num16].frameY != (num16 - num11) * 18)
39314 {
39315 flag2 = true;
39316 }
39317 }
39318 if (Main.tile[num15, num11 + 2] == null)
39319 {
39320 Main.tile[num15, num11 + 2] = new Tile();
39321 }
39322 if (!SolidTile(num15, num11 + 2) || Main.tile[num15, num11 + 2].type != 60)
39323 {
39324 flag2 = true;
39325 }
39326 }
39327 if (!flag2)
39328 {
39329 return;
39330 }
39331 _ = Main.tile[i, j].frameX;
39332 destroyObject = true;
39333 for (int num17 = num12; num17 < num12 + 3; num17++)
39334 {
39335 for (int num18 = num11; num18 < num11 + 3; num18++)
39336 {
39337 if (Main.tile[num17, num18] == null)
39338 {
39339 Main.tile[num17, num18] = new Tile();
39340 }
39341 if (Main.tile[num17, num18].type == type && Main.tile[num17, num18].active())
39342 {
39344 }
39345 }
39346 }
39347 destroyObject = false;
39348 }
static double Abs(double value)
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 System.Math.Abs(), Terraria.Item.NewItem(), Terraria.Main.player, Terraria.Enums.SolidTile, Terraria.NPC.SpawnOnPlayer(), Terraria.DataStructures.Tile, Terraria.Main.tile, and System.type.