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

◆ Convert()

static void Terraria.WorldGen.Convert ( int i,
int j,
int conversionType,
int size = 4 )
inlinestatic

Definition at line 46865 of file WorldGen.cs.

46866 {
46867 for (int k = i - size; k <= i + size; k++)
46868 {
46869 for (int l = j - size; l <= j + size; l++)
46870 {
46871 if (!InWorld(k, l, 1) || Math.Abs(k - i) + Math.Abs(l - j) >= 6)
46872 {
46873 continue;
46874 }
46875 Tile tile = Main.tile[k, l];
46876 int type = tile.type;
46877 int wall = tile.wall;
46878 switch (conversionType)
46879 {
46880 case 4:
46881 if (type <= TileID.Count && wall <= WallID.Count)
46882 {
46883 if (WallID.Sets.Conversion.Grass[wall] && wall != 81)
46884 {
46885 tile.wall = 81;
46887 NetMessage.SendTileSquare(-1, k, l);
46888 }
46889 else if (WallID.Sets.Conversion.Stone[wall] && wall != 83)
46890 {
46891 tile.wall = 83;
46893 NetMessage.SendTileSquare(-1, k, l);
46894 }
46895 else if (WallID.Sets.Conversion.HardenedSand[wall] && wall != 218)
46896 {
46897 tile.wall = 218;
46899 NetMessage.SendTileSquare(-1, k, l);
46900 }
46901 else if (WallID.Sets.Conversion.Sandstone[wall] && wall != 221)
46902 {
46903 tile.wall = 221;
46905 NetMessage.SendTileSquare(-1, k, l);
46906 }
46907 else if (WallID.Sets.Conversion.NewWall1[wall] && wall != 192)
46908 {
46909 tile.wall = 192;
46911 NetMessage.SendTileSquare(-1, k, l);
46912 }
46913 else if (WallID.Sets.Conversion.NewWall2[wall] && wall != 193)
46914 {
46915 tile.wall = 193;
46917 NetMessage.SendTileSquare(-1, k, l);
46918 }
46919 else if (WallID.Sets.Conversion.NewWall3[wall] && wall != 194)
46920 {
46921 tile.wall = 194;
46923 NetMessage.SendTileSquare(-1, k, l);
46924 }
46925 else if (WallID.Sets.Conversion.NewWall4[wall] && wall != 195)
46926 {
46927 tile.wall = 195;
46929 NetMessage.SendTileSquare(-1, k, l);
46930 }
46931 if ((Main.tileMoss[type] || TileID.Sets.Conversion.Stone[type]) && type != 203)
46932 {
46934 tile.type = 203;
46936 NetMessage.SendTileSquare(-1, k, l);
46937 }
46938 else if (TileID.Sets.Conversion.JungleGrass[type] && type != 662)
46939 {
46941 tile.type = 662;
46943 NetMessage.SendTileSquare(-1, k, l);
46944 }
46945 else if (TileID.Sets.Conversion.Grass[type] && type != 199)
46946 {
46948 tile.type = 199;
46950 NetMessage.SendTileSquare(-1, k, l);
46951 }
46952 else if (TileID.Sets.Conversion.Ice[type] && type != 200)
46953 {
46955 tile.type = 200;
46957 NetMessage.SendTileSquare(-1, k, l);
46958 }
46959 else if (TileID.Sets.Conversion.Sand[type] && type != 234)
46960 {
46962 tile.type = 234;
46964 NetMessage.SendTileSquare(-1, k, l);
46965 }
46966 else if (TileID.Sets.Conversion.HardenedSand[type] && type != 399)
46967 {
46968 tile.type = 399;
46970 NetMessage.SendTileSquare(-1, k, l);
46971 }
46972 else if (TileID.Sets.Conversion.Sandstone[type] && type != 401)
46973 {
46974 tile.type = 401;
46976 NetMessage.SendTileSquare(-1, k, l);
46977 }
46978 else if (TileID.Sets.Conversion.Thorn[type] && type != 352)
46979 {
46980 tile.type = 352;
46982 NetMessage.SendTileSquare(-1, k, l);
46983 }
46984 }
46985 continue;
46986 case 2:
46987 if (type > TileID.Count || wall > WallID.Count)
46988 {
46989 continue;
46990 }
46991 if (WallID.Sets.Conversion.Grass[wall] && wall != 70)
46992 {
46993 tile.wall = 70;
46995 NetMessage.SendTileSquare(-1, k, l);
46996 }
46997 else if (WallID.Sets.Conversion.Stone[wall] && wall != 28)
46998 {
46999 tile.wall = 28;
47001 NetMessage.SendTileSquare(-1, k, l);
47002 }
47003 else if (WallID.Sets.Conversion.HardenedSand[wall] && wall != 219)
47004 {
47005 tile.wall = 219;
47007 NetMessage.SendTileSquare(-1, k, l);
47008 }
47009 else if (WallID.Sets.Conversion.Sandstone[wall] && wall != 222)
47010 {
47011 tile.wall = 222;
47013 NetMessage.SendTileSquare(-1, k, l);
47014 }
47015 else if (WallID.Sets.Conversion.NewWall1[wall] && wall != 200)
47016 {
47017 tile.wall = 200;
47019 NetMessage.SendTileSquare(-1, k, l);
47020 }
47021 else if (WallID.Sets.Conversion.NewWall2[wall] && wall != 201)
47022 {
47023 tile.wall = 201;
47025 NetMessage.SendTileSquare(-1, k, l);
47026 }
47027 else if (WallID.Sets.Conversion.NewWall3[wall] && wall != 202)
47028 {
47029 tile.wall = 202;
47031 NetMessage.SendTileSquare(-1, k, l);
47032 }
47033 else if (WallID.Sets.Conversion.NewWall4[wall] && wall != 203)
47034 {
47035 tile.wall = 203;
47037 NetMessage.SendTileSquare(-1, k, l);
47038 }
47039 if ((Main.tileMoss[type] || TileID.Sets.Conversion.Stone[type]) && type != 117)
47040 {
47042 tile.type = 117;
47044 NetMessage.SendTileSquare(-1, k, l);
47045 }
47046 else if (TileID.Sets.Conversion.GolfGrass[type] && type != 492)
47047 {
47049 tile.type = 492;
47051 NetMessage.SendTileSquare(-1, k, l);
47052 }
47053 else if (TileID.Sets.Conversion.Grass[type] && type != 109 && type != 492)
47054 {
47056 tile.type = 109;
47058 NetMessage.SendTileSquare(-1, k, l);
47059 }
47060 else if (TileID.Sets.Conversion.Ice[type] && type != 164)
47061 {
47063 tile.type = 164;
47065 NetMessage.SendTileSquare(-1, k, l);
47066 }
47067 else if (TileID.Sets.Conversion.Sand[type] && type != 116)
47068 {
47070 tile.type = 116;
47072 NetMessage.SendTileSquare(-1, k, l);
47073 }
47074 else if (TileID.Sets.Conversion.HardenedSand[type] && type != 402)
47075 {
47076 tile.type = 402;
47078 NetMessage.SendTileSquare(-1, k, l);
47079 }
47080 else if (TileID.Sets.Conversion.Sandstone[type] && type != 403)
47081 {
47082 tile.type = 403;
47084 NetMessage.SendTileSquare(-1, k, l);
47085 }
47086 else if (TileID.Sets.Conversion.Thorn[type])
47087 {
47088 KillTile(k, l);
47089 if (Main.netMode == 1)
47090 {
47091 NetMessage.SendData(17, -1, -1, null, 0, k, l);
47092 }
47093 }
47094 if (type == 59 && (Main.tile[k - 1, l].type == 109 || Main.tile[k + 1, l].type == 109 || Main.tile[k, l - 1].type == 109 || Main.tile[k, l + 1].type == 109))
47095 {
47096 tile.type = 0;
47098 NetMessage.SendTileSquare(-1, k, l);
47099 }
47100 continue;
47101 case 1:
47102 if (type <= TileID.Count && wall <= WallID.Count)
47103 {
47104 if (WallID.Sets.Conversion.Grass[wall] && wall != 69)
47105 {
47106 tile.wall = 69;
47108 NetMessage.SendTileSquare(-1, k, l);
47109 }
47110 else if (TileID.Sets.Conversion.JungleGrass[type] && type != 661)
47111 {
47112 tile.type = 661;
47114 NetMessage.SendTileSquare(-1, k, l);
47115 }
47116 else if (WallID.Sets.Conversion.Stone[wall] && wall != 3)
47117 {
47118 tile.wall = 3;
47120 NetMessage.SendTileSquare(-1, k, l);
47121 }
47122 else if (WallID.Sets.Conversion.HardenedSand[wall] && wall != 217)
47123 {
47124 tile.wall = 217;
47126 NetMessage.SendTileSquare(-1, k, l);
47127 }
47128 else if (WallID.Sets.Conversion.Sandstone[wall] && wall != 220)
47129 {
47130 tile.wall = 220;
47132 NetMessage.SendTileSquare(-1, k, l);
47133 }
47134 else if (WallID.Sets.Conversion.NewWall1[wall] && wall != 188)
47135 {
47136 tile.wall = 188;
47138 NetMessage.SendTileSquare(-1, k, l);
47139 }
47140 else if (WallID.Sets.Conversion.NewWall2[wall] && wall != 189)
47141 {
47142 tile.wall = 189;
47144 NetMessage.SendTileSquare(-1, k, l);
47145 }
47146 else if (WallID.Sets.Conversion.NewWall3[wall] && wall != 190)
47147 {
47148 tile.wall = 190;
47150 NetMessage.SendTileSquare(-1, k, l);
47151 }
47152 else if (WallID.Sets.Conversion.NewWall4[wall] && wall != 191)
47153 {
47154 tile.wall = 191;
47156 NetMessage.SendTileSquare(-1, k, l);
47157 }
47158 if ((Main.tileMoss[type] || TileID.Sets.Conversion.Stone[type]) && type != 25)
47159 {
47161 tile.type = 25;
47163 NetMessage.SendTileSquare(-1, k, l);
47164 }
47165 else if (TileID.Sets.Conversion.Grass[type] && type != 23)
47166 {
47168 tile.type = 23;
47170 NetMessage.SendTileSquare(-1, k, l);
47171 }
47172 else if (TileID.Sets.Conversion.Ice[type] && type != 163)
47173 {
47175 tile.type = 163;
47177 NetMessage.SendTileSquare(-1, k, l);
47178 }
47179 else if (TileID.Sets.Conversion.Sand[type] && type != 112)
47180 {
47182 tile.type = 112;
47184 NetMessage.SendTileSquare(-1, k, l);
47185 }
47186 else if (TileID.Sets.Conversion.HardenedSand[type] && type != 398)
47187 {
47188 tile.type = 398;
47190 NetMessage.SendTileSquare(-1, k, l);
47191 }
47192 else if (TileID.Sets.Conversion.Sandstone[type] && type != 400)
47193 {
47194 tile.type = 400;
47196 NetMessage.SendTileSquare(-1, k, l);
47197 }
47198 else if (TileID.Sets.Conversion.Thorn[type] && type != 32)
47199 {
47200 tile.type = 32;
47202 NetMessage.SendTileSquare(-1, k, l);
47203 }
47204 }
47205 continue;
47206 case 3:
47208 {
47209 tile.wall = 80;
47211 NetMessage.SendTileSquare(-1, k, l);
47212 }
47213 if (tile.type == 60)
47214 {
47216 tile.type = 70;
47218 NetMessage.SendTileSquare(-1, k, l);
47219 }
47220 else if (TileID.Sets.Conversion.Thorn[type])
47221 {
47222 KillTile(k, l);
47223 if (Main.netMode == 1)
47224 {
47225 NetMessage.SendData(17, -1, -1, null, 0, k, l);
47226 }
47227 }
47228 continue;
47229 case 5:
47231 {
47232 continue;
47233 }
47235 {
47236 tile.wall = 187;
47238 NetMessage.SendTileSquare(-1, k, l);
47239 }
47240 else if ((WallID.Sets.Conversion.HardenedSand[wall] || WallID.Sets.Conversion.Dirt[wall] || WallID.Sets.Conversion.Snow[wall]) && wall != 216)
47241 {
47242 tile.wall = 216;
47244 NetMessage.SendTileSquare(-1, k, l);
47245 }
47247 {
47248 int num = 53;
47250 {
47251 num = 397;
47252 }
47254 tile.type = (ushort)num;
47256 NetMessage.SendTileSquare(-1, k, l);
47257 }
47258 else if (TileID.Sets.Conversion.HardenedSand[type] && type != 397)
47259 {
47260 tile.type = 397;
47262 NetMessage.SendTileSquare(-1, k, l);
47263 }
47264 else if ((Main.tileMoss[type] || TileID.Sets.Conversion.Stone[type] || TileID.Sets.Conversion.Ice[type] || TileID.Sets.Conversion.Sandstone[type]) && type != 396)
47265 {
47267 tile.type = 396;
47269 NetMessage.SendTileSquare(-1, k, l);
47270 }
47271 else if (TileID.Sets.Conversion.Thorn[type] && type != 69)
47272 {
47273 KillTile(k, l);
47274 if (Main.netMode == 1)
47275 {
47276 NetMessage.SendData(17, -1, -1, null, 0, k, l);
47277 }
47278 }
47279 continue;
47280 case 6:
47282 {
47283 continue;
47284 }
47286 {
47287 tile.wall = 71;
47289 NetMessage.SendTileSquare(-1, k, l);
47290 }
47291 else if ((WallID.Sets.Conversion.HardenedSand[wall] || WallID.Sets.Conversion.Dirt[wall] || WallID.Sets.Conversion.Snow[wall]) && wall != 40)
47292 {
47293 tile.wall = 40;
47295 NetMessage.SendTileSquare(-1, k, l);
47296 }
47298 {
47300 tile.type = 147;
47302 NetMessage.SendTileSquare(-1, k, l);
47303 }
47304 else if ((Main.tileMoss[type] || TileID.Sets.Conversion.Stone[type] || TileID.Sets.Conversion.Ice[type] || TileID.Sets.Conversion.Sandstone[type]) && type != 161)
47305 {
47307 tile.type = 161;
47309 NetMessage.SendTileSquare(-1, k, l);
47310 }
47311 else if (TileID.Sets.Conversion.Thorn[type] && type != 69)
47312 {
47313 KillTile(k, l);
47314 if (Main.netMode == 1)
47315 {
47316 NetMessage.SendData(17, -1, -1, null, 0, k, l);
47317 }
47318 }
47319 continue;
47320 case 7:
47322 {
47323 continue;
47324 }
47325 if ((WallID.Sets.Conversion.Stone[wall] || WallID.Sets.Conversion.Ice[wall] || WallID.Sets.Conversion.Sandstone[wall]) && wall != 1)
47326 {
47327 tile.wall = 1;
47329 NetMessage.SendTileSquare(-1, k, l);
47330 }
47331 else if ((WallID.Sets.Conversion.HardenedSand[wall] || WallID.Sets.Conversion.Snow[wall] || WallID.Sets.Conversion.Dirt[wall]) && wall != 2)
47332 {
47333 tile.wall = 2;
47335 NetMessage.SendTileSquare(-1, k, l);
47336 }
47337 else if (WallID.Sets.Conversion.NewWall1[wall] && wall != 196)
47338 {
47339 tile.wall = 196;
47341 NetMessage.SendTileSquare(-1, k, l);
47342 }
47343 else if (WallID.Sets.Conversion.NewWall2[wall] && wall != 197)
47344 {
47345 tile.wall = 197;
47347 NetMessage.SendTileSquare(-1, k, l);
47348 }
47349 else if (WallID.Sets.Conversion.NewWall3[wall] && wall != 198)
47350 {
47351 tile.wall = 198;
47353 NetMessage.SendTileSquare(-1, k, l);
47354 }
47355 else if (WallID.Sets.Conversion.NewWall4[wall] && wall != 199)
47356 {
47357 tile.wall = 199;
47359 NetMessage.SendTileSquare(-1, k, l);
47360 }
47362 {
47364 tile.type = 1;
47366 NetMessage.SendTileSquare(-1, k, l);
47367 }
47368 else if (TileID.Sets.Conversion.GolfGrass[type] && type != 477)
47369 {
47371 tile.type = 477;
47373 NetMessage.SendTileSquare(-1, k, l);
47374 }
47375 else if (TileID.Sets.Conversion.Grass[type] && type != 2 && type != 477)
47376 {
47378 tile.type = 2;
47380 NetMessage.SendTileSquare(-1, k, l);
47381 }
47383 {
47384 int num2 = 0;
47385 if (TileIsExposedToAir(k, l))
47386 {
47387 num2 = 2;
47388 }
47390 tile.type = (ushort)num2;
47392 NetMessage.SendTileSquare(-1, k, l);
47393 }
47394 else if (TileID.Sets.Conversion.Thorn[type] && type != 69)
47395 {
47396 KillTile(k, l);
47397 if (Main.netMode == 1)
47398 {
47399 NetMessage.SendData(17, -1, -1, null, 0, k, l);
47400 }
47401 }
47402 continue;
47403 }
47404 if (tile.wall == 69 || tile.wall == 70 || tile.wall == 81)
47405 {
47406 if ((double)l < Main.worldSurface)
47407 {
47408 if (genRand.Next(10) == 0)
47409 {
47410 tile.wall = 65;
47411 }
47412 else
47413 {
47414 tile.wall = 63;
47415 }
47416 }
47417 else
47418 {
47419 tile.wall = 64;
47420 }
47422 NetMessage.SendTileSquare(-1, k, l);
47423 }
47424 else if (WallID.Sets.Conversion.Stone[wall] && wall != 1 && wall != 262 && wall != 274 && wall != 61 && wall != 185)
47425 {
47426 tile.wall = 1;
47428 NetMessage.SendTileSquare(-1, k, l);
47429 }
47430 else if (WallID.Sets.Conversion.Stone[wall] && wall == 262)
47431 {
47432 tile.wall = 61;
47434 NetMessage.SendTileSquare(-1, k, l);
47435 }
47436 else if (WallID.Sets.Conversion.Stone[wall] && wall == 274)
47437 {
47438 tile.wall = 185;
47440 NetMessage.SendTileSquare(-1, k, l);
47441 }
47442 if (WallID.Sets.Conversion.NewWall1[wall] && wall != 212)
47443 {
47444 tile.wall = 212;
47446 NetMessage.SendTileSquare(-1, k, l);
47447 }
47448 else if (WallID.Sets.Conversion.NewWall2[wall] && wall != 213)
47449 {
47450 tile.wall = 213;
47452 NetMessage.SendTileSquare(-1, k, l);
47453 }
47454 else if (WallID.Sets.Conversion.NewWall3[wall] && wall != 214)
47455 {
47456 tile.wall = 214;
47458 NetMessage.SendTileSquare(-1, k, l);
47459 }
47460 else if (WallID.Sets.Conversion.NewWall4[wall] && wall != 215)
47461 {
47462 tile.wall = 215;
47464 NetMessage.SendTileSquare(-1, k, l);
47465 }
47466 else if (tile.wall == 80)
47467 {
47468 if ((double)l < Main.worldSurface + 4.0 + (double)genRand.Next(3) || (double)l > ((double)Main.maxTilesY + Main.rockLayer) / 2.0 - 3.0 + (double)genRand.Next(3))
47469 {
47470 tile.wall = 15;
47472 NetMessage.SendTileSquare(-1, k, l);
47473 }
47474 else
47475 {
47476 tile.wall = 64;
47478 NetMessage.SendTileSquare(-1, k, l);
47479 }
47480 }
47481 else if (WallID.Sets.Conversion.HardenedSand[wall] && wall != 216)
47482 {
47483 tile.wall = 216;
47485 NetMessage.SendTileSquare(-1, k, l);
47486 }
47487 else if (WallID.Sets.Conversion.Sandstone[wall] && wall != 187)
47488 {
47489 tile.wall = 187;
47491 NetMessage.SendTileSquare(-1, k, l);
47492 }
47493 if (tile.type == 492)
47494 {
47496 tile.type = 477;
47498 NetMessage.SendTileSquare(-1, k, l);
47499 }
47500 else if (TileID.Sets.Conversion.JungleGrass[type] && type != 60)
47501 {
47503 tile.type = 60;
47505 NetMessage.SendTileSquare(-1, k, l);
47506 }
47507 else if (TileID.Sets.Conversion.Grass[type] && type != 2 && type != 477)
47508 {
47510 tile.type = 2;
47512 NetMessage.SendTileSquare(-1, k, l);
47513 }
47514 else if (TileID.Sets.Conversion.Stone[type] && type != 1)
47515 {
47517 tile.type = 1;
47519 NetMessage.SendTileSquare(-1, k, l);
47520 }
47521 else if (TileID.Sets.Conversion.Sand[type] && type != 53)
47522 {
47524 tile.type = 53;
47526 NetMessage.SendTileSquare(-1, k, l);
47527 }
47528 else if (TileID.Sets.Conversion.HardenedSand[type] && type != 397)
47529 {
47530 tile.type = 397;
47532 NetMessage.SendTileSquare(-1, k, l);
47533 }
47534 else if (TileID.Sets.Conversion.Sandstone[type] && type != 396)
47535 {
47536 tile.type = 396;
47538 NetMessage.SendTileSquare(-1, k, l);
47539 }
47540 else if (TileID.Sets.Conversion.Ice[type] && type != 161)
47541 {
47543 tile.type = 161;
47545 NetMessage.SendTileSquare(-1, k, l);
47546 }
47548 {
47550 tile.type = 60;
47552 NetMessage.SendTileSquare(-1, k, l);
47553 }
47554 else if (tile.type == 32 || Main.tile[k, l].type == 352)
47555 {
47556 KillTile(k, l);
47557 if (Main.netMode == 1)
47558 {
47559 NetMessage.SendData(17, -1, -1, null, 0, k, l);
47560 }
47561 }
47562 }
47563 }
47564 }
static double Abs(double value)
static readonly ushort Count
Definition TileID.cs:1698
static bool[] CanBeConvertedToGlowingMushroom
Definition WallID.cs:36
static readonly ushort Count
Definition WallID.cs:753
static bool BlockBelowMakesSandConvertIntoHardenedSand(int i, int j)
static bool TileIsExposedToAir(int x, int y)
static void KillTile(int i, int j, bool fail=false, bool effectOnly=false, bool noItem=false)
static UnifiedRandom genRand
Definition WorldGen.cs:1215
static void SquareWallFrame(int i, int j, bool resetFrame=true)
static bool TryKillingTreesAboveIfTheyWouldBecomeInvalid(int i, int j, int newFloorType)
static bool InWorld(int x, int y, int fluff=0)
Definition WorldGen.cs:5816
static void SquareTileFrame(int i, int j, bool resetFrame=true)

References System.Math.Abs(), Terraria.ID.WallID.Sets.CanBeConvertedToGlowingMushroom, Terraria.ID.TileID.Count, Terraria.ID.WallID.Count, Terraria.ID.TileID.Sets.Conversion.Dirt, Terraria.ID.WallID.Sets.Conversion.Dirt, Terraria.ID.TileID.Sets.Conversion.GolfGrass, Terraria.ID.TileID.Sets.Conversion.Grass, Terraria.ID.WallID.Sets.Conversion.Grass, Terraria.ID.TileID.Sets.Conversion.HardenedSand, Terraria.ID.WallID.Sets.Conversion.HardenedSand, Terraria.ID.TileID.Sets.Conversion.Ice, Terraria.ID.WallID.Sets.Conversion.Ice, Terraria.ID.TileID.Sets.Conversion.JungleGrass, Terraria.Main.maxTilesY, Terraria.ID.TileID.Sets.Conversion.MushroomGrass, Terraria.Main.netMode, Terraria.ID.WallID.Sets.Conversion.NewWall1, Terraria.ID.WallID.Sets.Conversion.NewWall2, Terraria.ID.WallID.Sets.Conversion.NewWall3, Terraria.ID.WallID.Sets.Conversion.NewWall4, Terraria.Main.rockLayer, Terraria.ID.TileID.Sets.Conversion.Sand, Terraria.ID.TileID.Sets.Conversion.Sandstone, Terraria.ID.WallID.Sets.Conversion.Sandstone, Terraria.NetMessage.SendData(), Terraria.NetMessage.SendTileSquare(), Terraria.ID.TileID.Sets.Conversion.Snow, Terraria.ID.WallID.Sets.Conversion.Snow, Terraria.ID.TileID.Sets.Conversion.Stone, Terraria.ID.WallID.Sets.Conversion.Stone, Terraria.ID.TileID.Sets.Conversion.Thorn, Terraria.Main.tile, Terraria.Main.tileMoss, System.type, Terraria.Tile.type, Terraria.Tile.wall, and Terraria.Main.worldSurface.

Referenced by Terraria.Projectile.Kill().