Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ IslandHouse()

static void Terraria.WorldGen.IslandHouse ( int i,
int j,
int islandStyle )
inlinestatic

Definition at line 69320 of file WorldGen.cs.

69321 {
69322 //IL_009b: Unknown result type (might be due to invalid IL or missing references)
69323 //IL_00d5: Unknown result type (might be due to invalid IL or missing references)
69324 //IL_00ec: Unknown result type (might be due to invalid IL or missing references)
69325 //IL_0103: Unknown result type (might be due to invalid IL or missing references)
69326 //IL_011a: Unknown result type (might be due to invalid IL or missing references)
69327 //IL_021d: Unknown result type (might be due to invalid IL or missing references)
69328 //IL_022a: Unknown result type (might be due to invalid IL or missing references)
69329 //IL_0237: Unknown result type (might be due to invalid IL or missing references)
69330 //IL_0244: Unknown result type (might be due to invalid IL or missing references)
69331 //IL_0305: Unknown result type (might be due to invalid IL or missing references)
69332 bool flag = crimson;
69333 if (drunkWorldGen)
69334 {
69335 flag = (GenVars.crimsonLeft && i < Main.maxTilesX / 2) || ((!GenVars.crimsonLeft && i > Main.maxTilesX / 2) ? true : false);
69336 }
69337 byte type = 202;
69338 byte wall = 82;
69339 Vector2D val = default(Vector2D);
69340 ((Vector2D)(ref val))._002Ector((double)i, (double)j);
69341 int num = 1;
69342 if (genRand.Next(2) == 0)
69343 {
69344 num = -1;
69345 }
69346 int num2 = genRand.Next(7, 12);
69347 int num3 = genRand.Next(5, 7);
69348 val.X = i + (num2 + 2) * num;
69349 for (int k = j - 15; k < j + 30; k++)
69350 {
69351 if (Main.tile[(int)val.X, k].active())
69352 {
69353 val.Y = k - 1;
69354 break;
69355 }
69356 }
69357 val.X = i;
69358 int num4 = (int)(val.X - (double)num2 - 1.0);
69359 int num5 = (int)(val.X + (double)num2 + 1.0);
69360 int num6 = (int)(val.Y - (double)num3 - 1.0);
69361 int num7 = (int)(val.Y + 2.0);
69362 if (num4 < 0)
69363 {
69364 num4 = 0;
69365 }
69366 if (num5 > Main.maxTilesX)
69367 {
69368 num5 = Main.maxTilesX;
69369 }
69370 if (num6 < 0)
69371 {
69372 num6 = 0;
69373 }
69374 if (num7 > Main.maxTilesY)
69375 {
69376 num7 = Main.maxTilesY;
69377 }
69378 for (int l = num4; l <= num5; l++)
69379 {
69380 for (int m = num6 - 1; m < num7 + 1; m++)
69381 {
69382 if (m != num6 - 1 || (l != num4 && l != num5))
69383 {
69384 Main.tile[l, m].active(active: true);
69385 Main.tile[l, m].liquid = 0;
69386 Main.tile[l, m].type = type;
69387 Main.tile[l, m].wall = 0;
69388 Main.tile[l, m].halfBrick(halfBrick: false);
69389 Main.tile[l, m].slope(0);
69390 }
69391 }
69392 }
69393 num4 = (int)(val.X - (double)num2);
69394 num5 = (int)(val.X + (double)num2);
69395 num6 = (int)(val.Y - (double)num3);
69396 num7 = (int)(val.Y + 1.0);
69397 if (num4 < 0)
69398 {
69399 num4 = 0;
69400 }
69401 if (num5 > Main.maxTilesX)
69402 {
69403 num5 = Main.maxTilesX;
69404 }
69405 if (num6 < 0)
69406 {
69407 num6 = 0;
69408 }
69409 if (num7 > Main.maxTilesY)
69410 {
69411 num7 = Main.maxTilesY;
69412 }
69413 for (int n = num4; n <= num5; n++)
69414 {
69415 for (int num8 = num6; num8 < num7; num8++)
69416 {
69417 if ((num8 != num6 || (n != num4 && n != num5)) && Main.tile[n, num8].wall == 0)
69418 {
69419 Main.tile[n, num8].active(active: false);
69420 Main.tile[n, num8].wall = wall;
69421 }
69422 }
69423 }
69424 int num9 = i + (num2 + 1) * num;
69425 int num10 = (int)val.Y;
69426 for (int num11 = num9 - 2; num11 <= num9 + 2; num11++)
69427 {
69428 Main.tile[num11, num10].active(active: false);
69429 Main.tile[num11, num10 - 1].active(active: false);
69430 Main.tile[num11, num10 - 2].active(active: false);
69431 }
69432 if (remixWorldGen)
69433 {
69434 if (flag)
69435 {
69436 PlaceTile(num9, num10, 10, mute: true, forced: false, -1, 5);
69437 }
69438 else
69439 {
69440 PlaceTile(num9, num10, 10, mute: true, forced: false, -1, 38);
69441 }
69442 }
69443 else
69444 {
69445 PlaceTile(num9, num10, 10, mute: true, forced: false, -1, 9);
69446 }
69447 num9 = i + (num2 + 1) * -num - num;
69448 for (int num12 = num6; num12 <= num7 + 1; num12++)
69449 {
69450 Main.tile[num9, num12].active(active: true);
69451 Main.tile[num9, num12].liquid = 0;
69452 Main.tile[num9, num12].type = type;
69453 Main.tile[num9, num12].wall = 0;
69454 Main.tile[num9, num12].halfBrick(halfBrick: false);
69455 Main.tile[num9, num12].slope(0);
69456 }
69457 int contain = 0;
69459 if (num13 > 3)
69460 {
69461 num13 = genRand.Next(4);
69462 }
69463 switch (num13)
69464 {
69465 case 0:
69466 contain = 159;
69467 break;
69468 case 1:
69469 contain = 65;
69470 break;
69471 case 2:
69472 contain = 158;
69473 break;
69474 case 3:
69475 contain = 2219;
69476 break;
69477 }
69478 if (getGoodWorldGen)
69479 {
69481 }
69482 else
69483 {
69485 }
69486 if (islandStyle > 0)
69487 {
69488 for (int num14 = 0; num14 < 100000; num14++)
69489 {
69490 int num15 = i + genRand.Next(-50, 51);
69491 int num16 = num10 + genRand.Next(21);
69492 if ((num14 >= 50000 || Main.tile[num15, num16].type != 202) && !Main.tile[num15, num16].active())
69493 {
69495 if (Main.tile[num15, num16].active())
69496 {
69498 break;
69499 }
69500 }
69501 }
69502 }
69504 if (!remixWorldGen)
69505 {
69506 int num17 = i - num2 / 2 + 1;
69507 int num18 = i + num2 / 2 - 1;
69508 int num19 = 1;
69509 if (num2 > 10)
69510 {
69511 num19 = 2;
69512 }
69513 int num20 = (num6 + num7) / 2 - 1;
69514 for (int num21 = num17 - num19; num21 <= num17 + num19; num21++)
69515 {
69516 for (int num22 = num20 - 1; num22 <= num20 + 1; num22++)
69517 {
69518 Main.tile[num21, num22].wall = 21;
69519 }
69520 }
69521 for (int num23 = num18 - num19; num23 <= num18 + num19; num23++)
69522 {
69523 for (int num24 = num20 - 1; num24 <= num20 + 1; num24++)
69524 {
69525 Main.tile[num23, num24].wall = 21;
69526 }
69527 }
69528 }
69529 int num25 = i + (num2 / 2 + 1) * -num;
69530 if (remixWorldGen)
69531 {
69532 if (flag)
69533 {
69534 PlaceTile(num25, num7 - 1, 14, mute: true, forced: false, -1, 5);
69535 PlaceTile(num25 - 2, num7 - 1, 15, mute: true, forced: false, 0, 8);
69536 PlaceTile(num25 + 2, num7 - 1, 15, mute: true, forced: false, 0, 8);
69537 }
69538 else
69539 {
69540 PlaceTile(num25, num7 - 1, 469, mute: true, forced: false, -1, 2);
69541 PlaceTile(num25 - 2, num7 - 1, 15, mute: true, forced: false, 0, 38);
69542 PlaceTile(num25 + 2, num7 - 1, 15, mute: true, forced: false, 0, 38);
69543 }
69544 }
69545 else
69546 {
69547 PlaceTile(num25, num7 - 1, 14, mute: true, forced: false, -1, 7);
69548 PlaceTile(num25 - 2, num7 - 1, 15, mute: true, forced: false, 0, 10);
69549 PlaceTile(num25 + 2, num7 - 1, 15, mute: true, forced: false, 0, 10);
69550 }
69551 Main.tile[num25 - 2, num7 - 1].frameX += 18;
69552 Main.tile[num25 - 2, num7 - 2].frameX += 18;
69553 if (!remixWorldGen)
69554 {
69555 int i2 = num4 + 1;
69556 int j2 = num6;
69557 PlaceTile(i2, j2, 91, mute: true, forced: false, -1, genRand.Next(7, 10));
69558 i2 = num5 - 1;
69559 j2 = num6;
69560 PlaceTile(i2, j2, 91, mute: true, forced: false, -1, genRand.Next(7, 10));
69561 if (num > 0)
69562 {
69563 i2 = num4;
69564 j2 = num6 + 1;
69565 }
69566 else
69567 {
69568 i2 = num5;
69569 j2 = num6 + 1;
69570 }
69571 PlaceTile(i2, j2, 91, mute: true, forced: false, -1, genRand.Next(7, 10));
69572 }
69573 if (islandStyle != 1)
69574 {
69575 return;
69576 }
69577 int num26 = genRand.Next(3, 6);
69578 for (int num27 = 0; num27 < 100000; num27++)
69579 {
69580 int num28 = i + genRand.Next(-50, 51);
69581 int num29 = num10 + genRand.Next(-10, 21);
69582 if (!Main.tile[num28, num29].active())
69583 {
69584 GrowPalmTree(num28, num29 + 1);
69585 if (Main.tile[num28, num29].active())
69586 {
69587 num26--;
69588 }
69589 }
69590 if (num26 <= 0)
69591 {
69592 break;
69593 }
69594 }
69595 }
static bool remixWorldGen
Definition WorldGen.cs:1148
static bool GrowPalmTree(int i, int y)
static bool PlaceTile(int i, int j, int Type, bool mute=false, bool forced=false, int plr=-1, int style=0)
static UnifiedRandom genRand
Definition WorldGen.cs:1215
static bool crimson
Definition WorldGen.cs:932
static bool AddBuriedChest(Point point, int contain=0, bool notNearOtherChests=false, int Style=-1)
static void SwitchFountain(int i, int j)
static bool drunkWorldGen
Definition WorldGen.cs:1154
static bool getGoodWorldGen
Definition WorldGen.cs:1156
static void Place2xX(int x, int y, ushort type, int style=0)

References Terraria.WorldBuilding.GenVars.crimsonLeft, Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.WorldBuilding.GenVars.skyIslandHouseCount, Terraria.Main.tile, System.type, ReLogic.Utilities.Vector2D.X, and ReLogic.Utilities.Vector2D.Y.