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

◆ smCallBack()

static void Terraria.WorldGen.smCallBack ( object threadContext)
inlinestatic

Definition at line 24605 of file WorldGen.cs.

24606 {
24607 List<GenPass> list = new List<GenPass>();
24608 IsGeneratingHardMode = true;
24610 if (Main.rand == null)
24611 {
24612 Main.rand = new UnifiedRandom((int)DateTime.Now.Ticks);
24613 }
24614 double num = (double)genRand.Next(300, 400) * 0.001;
24615 double num2 = (double)genRand.Next(200, 300) * 0.001;
24616 int num3 = (int)((double)Main.maxTilesX * num);
24617 int num4 = (int)((double)Main.maxTilesX * (1.0 - num));
24618 int num5 = 1;
24619 if (genRand.Next(2) == 0)
24620 {
24621 num4 = (int)((double)Main.maxTilesX * num);
24622 num3 = (int)((double)Main.maxTilesX * (1.0 - num));
24623 num5 = -1;
24624 }
24625 int num6 = 1;
24626 if (GenVars.dungeonX < Main.maxTilesX / 2)
24627 {
24628 num6 = -1;
24629 }
24630 if (num6 < 0)
24631 {
24632 if (num4 < num3)
24633 {
24634 num4 = (int)((double)Main.maxTilesX * num2);
24635 }
24636 else
24637 {
24638 num3 = (int)((double)Main.maxTilesX * num2);
24639 }
24640 }
24641 else if (num4 > num3)
24642 {
24643 num4 = (int)((double)Main.maxTilesX * (1.0 - num2));
24644 }
24645 else
24646 {
24647 num3 = (int)((double)Main.maxTilesX * (1.0 - num2));
24648 }
24652 list.Add(HardmodeGoodRemixPass);
24653 list.Add(HardmodeGoodPass);
24654 list.Add(HardmodeEvilPass);
24655 if (Main.remixWorld)
24656 {
24657 HardmodeGoodPass.Disable();
24658 HardmodeEvilPass.Disable();
24659 }
24660 else
24661 {
24662 HardmodeGoodRemixPass.Disable();
24663 }
24664 list.Add(new PassLegacy("Hardmode Walls", HardmodeWallsTask));
24665 list.Add(new PassLegacy("Hardmode Announcement", HardmodeAnnouncementTask));
24666 smCallback_End(list);
24667 void HardmodeEvilTask(GenerationProgress progress, GameConfiguration configuration)
24668 {
24669 GERunner(num4, 0, 3 * -num5, 5.0, good: false);
24670 }
24671 static void HardmodeGoodRemixTask(GenerationProgress progress, GameConfiguration configuration)
24672 {
24673 int num7 = Main.maxTilesX / 7;
24674 int num8 = Main.maxTilesX / 14;
24675 if (Main.dungeonX < Main.maxTilesX / 2)
24676 {
24677 for (int i = Main.maxTilesX - num7 - num8; i < Main.maxTilesX; i++)
24678 {
24679 for (int j = (int)Main.worldSurface + genRand.Next(-1, 2); j < Main.maxTilesY - 10; j++)
24680 {
24681 if (i > Main.maxTilesX - num7)
24682 {
24683 Convert(i, j, 2, 1);
24684 }
24685 else if (TileID.Sets.Crimson[Main.tile[i, j].type] || TileID.Sets.Corrupt[Main.tile[i, j].type])
24686 {
24687 Convert(i, j, 2, 1);
24688 }
24689 }
24690 }
24691 }
24692 else
24693 {
24694 for (int k = 0; k < num7 + num8; k++)
24695 {
24696 for (int l = (int)Main.worldSurface + genRand.Next(-1, 2); l < Main.maxTilesY - 10; l++)
24697 {
24698 if (k < num7)
24699 {
24700 Convert(k, l, 2, 1);
24701 }
24702 else if (TileID.Sets.Crimson[Main.tile[k, l].type] || TileID.Sets.Corrupt[Main.tile[k, l].type])
24703 {
24704 Convert(k, l, 2, 1);
24705 }
24706 }
24707 }
24708 }
24709 }
24710 void HardmodeGoodTask(GenerationProgress progress, GameConfiguration configuration)
24711 {
24712 GERunner(num3, 0, 3 * num5, 5.0);
24713 }
24714 }
static bool[] Crimson
Definition TileID.cs:316
static bool[] Corrupt
Definition TileID.cs:302
static void TryProtectingSpawnedItems()
static UnifiedRandom genRand
Definition WorldGen.cs:1455
static void HardmodeWallsTask(GenerationProgress progress, GameConfiguration configuration)
static void smCallback_End(List< GenPass > hardmodeTasks)
static void HardmodeAnnouncementTask(GenerationProgress progress, GameConfiguration configuration)
static void GERunner(int i, int j, double speedX=0.0, double speedY=0.0, bool good=true)
static void Convert(int i, int j, int conversionType, int size=4)
Converts biome variant tiles and walls to a target biome. Converts a 9x9 square by default,...
static bool IsGeneratingHardMode
Definition WorldGen.cs:1202

References Terraria.ID.TileID.Sets.Corrupt, Terraria.ID.TileID.Sets.Crimson, Terraria.WorldBuilding.GenVars.dungeonX, Terraria.Main.dungeonX, Terraria.Main.maxTilesX, Terraria.Main.rand, Terraria.Main.remixWorld, Terraria.Main.tile, and Terraria.Main.worldSurface.