PC [Idea] Trapping and farming the lunar event pillars

Smiffy

Skeletron Prime
Whilst farming the solar events today, I had come across a few observations that would spark an interesting idea.


The first observation was to do with the height of which the pillar spawns. In my world I have a large cliff that I had made around the location of where one of the pillars spawn during the event. Sometimes, the pillar appears on top of the cliff, and sometimes it appears at the bottom of the cliff. The second observation was to do with pillars spawning under clouds. If the pillars were programmed to take the highest block at a certain X coordinate and spawn on top of it, I would have seen the pillar on top of the cloud. Instead, the pillar spawned below it, implying that there is some height limit (presumably space).


This is my idea: If pillars won't spawn above a certain point it would mean that you could stop pillars from spawning in a particular location by filling that area with blocks all the way up to space. So I had the idea of filling in an entire section of the map with blocks, and leaving a gap in the middle of it for the pillar to spawn in.

UPDATE: Thanks to @Wahoa we now know that a pillar will be forced inside a certain position 100% of the time if it can't find an open space for it to spawn within 15 attempts. This means that you can reliably force a pillar in one location without fail. I'd recommend reading his post for more information, which also comes with a pastebin of information on where the pillars do attempt to spawn on all 3 world sizes so that you can force it to its "failsafe" position: http://forums.terraria.org/index.php?threads/idea-trapping-a-lunar-event-pillar.24250/#post-642138

The next step is to try and figure out a design for an arena that can suitably deal with all 4 pillars and their monsters, since the pillars don't always spawn in the same order. I suppose the ultimate goal here is to make the entire solar event AFKable, including the killing of the cultists and the lunatic cultist boss, the 4 pillars, and perhaps even the moon lord itself. The question right now is how do we make an arena that can deal with each of the four pillars?

I do have an idea on the solar pillar to start with. I had built an arena similar to what Yrimir had made for one of this Frost Moon videos from 1.2, and it just so happens to be near a pillar spawning zone. It turns out that it works extremely well with the Solar pillar, since the solar monsters (with the exception of the crawltipede) only spawn on the ground. This means that you can give them a spawning platform under you. The design in the picture isn't a working design, I am just displaying it to show what I mean:

Capture 2015-07-24 17_48_14.png


Perhaps with a large amount of spear traps underneath the player (dome similarly to how DicemanX used spears here http://forums.terraria.org/index.ph...n-and-frost-moon-events-using-autofarms.4850/) any mobs that spawn on the ground could be taken care of.


 
Last edited:
hmm... if one could trap the pillar in an area (effectively and with few resources...)

Then someone could easily set up a teleportation "quick kill" to farm ML... and Fragments (which sell for about 1 gold each. 100=about a plat, so it might be a good money farm, too)

I think you're onto something
 
If the minimum width is 35 tiles, would pillars of sand spaced 34 blocks apart be enough to block spawns in unwanted areas? Harvesting the required amount of sand for that wouldn't be too bad with the drill mount, and each sand block could be dropped off a skybridge instead of being placed manually.
 
If the minimum width is 35 tiles, would pillars of sand spaced 34 blocks apart be enough to block spawns in unwanted areas? Harvesting the required amount of sand for that wouldn't be too bad with the drill mount, and each sand block could be dropped off a skybridge instead of being placed manually.

Hmmm... @Smiffy do you know if there is a hight reuiremnt for the pillars? if so, a grid of blocks every 34x?? would work for negating the Pillar's spawning
 
Whilst farming the solar events today, I had come across a few observations that would spark an interesting idea.


The first observation was to do with the height of which the pillar spawns. In my world I have a large cliff that I had made around the location of where one of the pillars spawn during the event. Sometimes, the pillar appears on top of the cliff, and sometimes it appears at the bottom of the cliff. The second observation was to do with pillars spawning under clouds. If the pillars were programmed to take the highest block at a certain X coordinate and spawn on top of it, I would have seen the pillar on top of the cloud. Instead, the pillar spawned below it, implying that there is some height limit (presumably space).


This is my idea: If pillars won't spawn above a certain point it would mean that you could stop pillars from spawning in a particular location by filling that area with blocks all the way up to space. So I had the idea of filling in an entire section of the map with blocks, and leaving a gap in the middle of it for the pillar to spawn in.


So I tried it. And it worked.
YPBWdR4.png


It may be worth noting that none of the vortex monsters spawned at all whilst being in that little area I took the photo in. I haven't looked into actually spawning the creatures in yet. I used an experimental version of tEdit to fill in a large gap in a small world. After multiple tests, i found that the minimum width of the gap where the pillar is to spawn MUST be 35 blocks, otherwise the pillar ends up in what looks to be a default location underground.
6Jb4kjA.png




So what does this mean? To be honest, I don't know yet. It's all well and good having a pillar exactly where you want it, but is it really worth placing a block everywhere within a rather large area just for this sole purpose? I will be looking more into the pillar spawning behaviours soon, to hopefully find a way of controlling where the pillar spawns without having to cover a quarter of your world with blocks, but if a use for this can't be found then there's simply no point. And to be quite honest, I don't see myself ever building something this large anyway.
MlC6m89.png



So what do you guys think? Is there a potential use to this, or is this just the ramblings of a lunatic who has been playing too much terraria recently?


OK, the reason for which no monsters spawned other than the pillar is because monsters only spawn outside of the screen you can view. Since there were no available surfaces due to them being fully blocked, no monsters spawned at all other than the pillar.

Making some air pockets or a long simple corridor leading to the trapped pillar would allow you to spawn the necessary monsters to destroy the shield around the pillar.

Say the image you used above about the pillars being enclosed. Then make a very long corridor on one side of the pillar (100x5). Monsters will spawn in that corridor only. You can couple this with placing traps in that corridor, or if you prefer to beat the monsters yourself, an actuated doorway which you can close once the shield around the pillar is broken. If you further make the floor of the corridor actuatable and plavpce lava beneath it, you can block all spawns from occurring once you are done destroying the shield.

The true thing to investigate is the range from which the Pilar's can spawn. If they are limited within a certain area of the map (vertically and horizontally) it is possible to determine the minimum area that needs to be blocked.

Ex: say that the pillars have a possible spawning location of 100x100 and can spawn anywhere in that area as long as it satisfies the conditions. If we say that the area it spawns when all other locations are filled with blocks is the center, then it should be possible to calculate this more accurately.
 
Actually, regarding mob spawns for the Pillar fights: You'll be kinda screwing yourself over because for the Solar Pillar (I don't remember offhand for the other 3 pillars), at least two of the mobs there can travel through solid blocks. Using solid block to block and control spawn would limit your own movements. And since the pillar don't spawn in the same "order" each time they are "summoned", all four spawn points would need the same set up for dealing with those types of mobs, which may get elaborate.

Maybe someone can see if player-placed mob-suppressing BG Walls can control the pillars' spawn locations as well? If those work, you can control the mob spawns and still have room to maneuver during fights. And if the walls DO work, perhaps try a set up similar to the sand column idea mentioned: BG Wall columns every 30-block or so to control the Pillar spawn location rather than filling in far more.

Were any tests done for minimum spawn area height as well?
 
I have done a few more tests, and I have the results of them:

I tried to see what would happen if you removed everything within a pillar's spawning area instead of filling it in, in the hopes of controlling where the pillars spawn WITHOUT having to fill every block in. After multiple tests I found that the pillar usually spawned below the tower I had made for it. I even tried lowering the floor to near hell level, and the pillar just spawned in mid-air.

I also tried to pinpoint the exact height that the pillar could now spawn at. I filled in the entire area once again and took one layer off each time I killed the lunatic cultist. On a small world, I have worked out that building up to a depth of 417' Space (according to the in-game depth meter) . Any lower and the pillar will be able to spawn there.

I have also tested the idea of placing columns every 30 blocks or so to stop it spawning. Unfortunately, the pillar spawned in between them despite what seemed to be a 35-block minimum width. The pillars themselves are only ~25 blocks wide, but they wouldn't spawn in an area any thinner than 35 blocks until now. I then tried every 15 blocks, and oddly enough the pillar spawned underground (just like it does when it can't find a location).

Finally I tried a grid pattern. Instead of just having columns 30 blocks away from each other, I also had rows 30 blocks above one another. But that failed too, as the pillar spawned underground. I even tried adding walls behind them, but that failed too.

Unfortunately, it seems like a large filling job is in order to execute this in properly. I guess the next step is to find out where the pillar CAN spawn so that the job is as little as possible. I have no idea how to go around doing this, but I do have some information on where the pillar spawns under certain conditions:

  • During the first test of emptying out the area instead of filling it in, I found that the pillar always spawned at a depth of 0' Surface (according to the in-game depth meter), which is where the caverns start and the background changes.
  • During the other tests, when the pillar had nowhere to spawn and went underground it always seemed to spawn at around 70' Surface depth, and around 2500' West position (I did my tests on the left-most pillar closest to my dungeon). I don't know if it spawns in the exact same position each time, but my guess is that this is the left spawning limit of the left-most pillar on a small world.

I do have a few more tests that I will attempt later involving testing the behaviour of spawning with liquids (so we can fill in the area with water instead). But if this fails then filling it in completely seems to be the only way. Anyone have any other ideas?
 
Last edited:
I have done a few more tests, and I have the results of them:

I tried to see what would happen if you removed everything within a pillar's spawning area instead of filling it in, in the hopes of controlling where the pillars spawn WITHOUT having to fill every block in. After multiple tests I found that the pillar usually spawned below the tower I had made for it. I even tried lowering the floor to near hell level, and the pillar just spawned in mid-air.

I also tried to pinpoint the exact height that the pillar could now spawn at. I filled in the entire area once again and took one layer off each time I killed the lunatic cultist. On a small world, I have worked out that building up to a depth of 417' Space (according to the in-game depth meter) . Any lower and the pillar will be able to spawn there.

I have also tested the idea of placing columns every 30 blocks or so to stop it spawning. Unfortunately, the pillar spawned in between them despite what seemed to be a 35-block minimum width. The pillars themselves are only ~25 blocks wide, but they wouldn't spawn in an area any thinner than 35 blocks until now. I then tried every 15 blocks, and oddly enough the pillar spawned underground (just like it does when it can't find a location).

Finally I tried a grid pattern. Instead of just having columns 30 blocks away from each other, I also had rows 30 blocks above one another. But that failed too, as the pillar spawned underground. I even tried adding walls behind them, but that failed too.

Unfortunately, it seems like a large filling job is in order to execute this in properly. I guess the next step is to find out where the pillar CAN spawn so that the job is as little as possible. I have no idea how to go around doing this, but I do have some information on where the pillar spawns under certain conditions:

  • During the first test of emptying out the area instead of filling it in, I found that the pillar always spawned at a depth of 0' Surface (according to the in-game depth meter), which is where the caverns start and the background changes.
  • During the other tests, when the pillar had nowhere to spawn and went underground it always seemed to spawn at around 70' Surface depth, and around 2500' West position (I did my tests on the left-most pillar closest to my dungeon). I don't know if it spawns in the exact same position each time, but my guess is that this is the left spawning limit of the left-most pillar on a small world.

I do have a few more tests that I will attempt later involving testing the behaviour of spawning with liquids (so we can fill in the area with water instead). But if this fails then filling it in completely seems to be the only way. Anyone have any other ideas?

Water doesn't stop spawns, but lava does. Water won't affect the spawn at all...
 
Unfortunately, I have found out that there is a chance that the original design won't work, and that the pillar will spawn underground anyway. I had tested it multiple times last night, and on none of those occasions did the pillar spawn underground. Whilst testing it earlier, I found that the pillar had not spawned where it was meant to despite there being enough room for it. However not all hope is lost. I will update the OP with the updated info.
 
Actually, regarding mob spawns for the Pillar fights: You'll be kinda screwing yourself over because for the Solar Pillar (I don't remember offhand for the other 3 pillars), at least two of the mobs there can travel through solid blocks. Using solid block to block and control spawn would limit your own movements. And since the pillar don't spawn in the same "order" each time they are "summoned", all four spawn points would need the same set up for dealing with those types of mobs, which may get elaborate.

For the Solar Pillar, I know the Crawltipedes ignore grounded players (or those on platforms). Corites are the only problem mob there.
For the Vortex Pillar, I can't remember seeing any mobs attacking or moving through blocks, but the Pillar's lightning might be able to.
For the Nebula Pillar, everything can get you through blocks somehow, except Predictors.
For the Stardust Pillar, only the Milkyway Weavers can go through blocks.
 
I decided to take a look at the code that decides where to place the lunar pillars. The relevant function is TriggerLunarApocalypse in WorldGen.cs. Summarised in pseudocode, skipping some details but hopefully still correct:

Code:
int maxTilesX = 4200 (small), 6300 (medium), or 8400 (large);
int offset = maxTilesX / 5;
for (int pillar = 1; pillar <= 4; ++pillar) {
   try 15 times:
      int xPos = offset * pillar + random(-100 to 100 inclusive);
      for (int yPos = surfaceLevel; yPos > 100; --y) {
          if (no solid blocks in the rectangle from (xPos - 10, yPos - 20) to (xPos + 10, yPos + 15) (inclusive)) {
              spawn random pillar at (xPos, yPos);
          } else {
              try again;
          }
      }
   if never successful after 15 tries:
      spawn random pillar at (offset * pillar, surfaceLevel - 40);
}

Based on this I was able to come up with a minimum set of blocks to force all 15 spawn attempts to fail and force it to spawn in the fallback position. Here's a screenshot of it in practice. Half of those blocks are unnecessary as there's solid blocks around there anyway, so if I had done that without TEdit I would have only needed to place 40 blocks total -- completely doable without TEdit, albeit tedious, and depending on the terrain and world size you may need to place as many as 120 on a large world. It could be done with an ice rod, ruler, an infinite flying mount and some patience; or you could just make a bunch of sand columns; or something in between those two extremes.

Here's a pastebin with the coordinates I generated to block all pillars in any world size, they should hopefully all be correct: http://pastebin.com/1qd5Task (edit: just noticed medium world values were off, should be good now)
Surface level varies between worlds so you can either determine the coordinates based on finding out your surface level with e.g. TEdit or TerraMap, or just by using the coordinates given by the depth meter. In that pastebin, the compass and depth meter coordinates are what are shown in game when you stand with the centre of your character's feet on the top left half of the block (as each block is 2'x2'). Oh, and technically the columns could have been placed 21 blocks apart rather than 20 but you would still need 10 columns per pillar either way, and 20 block spacing is easier to work with.
 
Last edited:
Very nice work, @Wahoa ! I was working on something similar; I'll post a picture of it when I get the chance.

However, there's one thing that I couldn't quite figure out for certain and it means I might have to move something around: when the Pillar spawns at, say, (2520, 80), where is that in terms of the actual enemy? Is that its center, lower right corner, lower center, etc.?

I wanted to build a box around the pillar, because it can mess with its AI a little, but obviously I need to figure out the exact tile locations to do that.
 
From what I can tell, on the X axis, the centre of the pillar is aligned with the left edge of the block at the coordinate given. The width of each pillar is 130 units / 8.125 blocks / 16.25', so if I'm not mistaken you would box that pillar in with walls at x = 2508' and 2530' (or 3354, 3365 in block coordinates).

The Y axis is a bit more complicated because the pillar floats up and down a bit all the time. At the time of spawning, I believe the top edge of the block at the 80' coordinate aligns with the very bottom edge of the pillar (not including the shield), and the up and down floating behaviour seems to begin at the top (i.e. with no velocity, but beginning to build up downward velocity). What complicates things further is that I found if you save and exit repeatedly, you can force the pillar to move down more and more over time. When you save the world it saves the current position of the pillar but not the velocity, and the floating always begins at the top when you load the world.

The height of the pillars is 270 units / 16.875 blocks / 33.75', so the roof of the box would be at y = 116' (or 58 blocks above surface). Ignoring the save/reload downward movement stuff, looking at the code the floating behaviour seems to be defined by (hopefully I'm looking in the right place):
Code:
this.velocity = new Vector2(0.0f, (float) Math.Sin(6.28318548202515 * (double) this.ai[0] / 300.0) * 0.5f);
++this.ai[0];
That means just under 3 blocks of downward displacement from the original position at most, so the bottom of the box would be at y = 74' (or 37 blocks above surface).


Edit: Here's a super simple Vortex Pillar 'farm'. There are no valid spawning spaces around, and the Vortex Pillar's 'attack', which occurs every 1-3 seconds or so, involves spawning a portal that releases a pair of Alien Hornets 10 blocks above the player's head -- fewer than 10 if there are any solid blocks in the way, thus the gap in the floor of the little dirt room. So, the room fills up with Hornets. It's 100% safe as long as there are fewer than 14 Alien Hornets around, otherwise the portal shoots lightning at you. This spawning behaviour may have to be taken into consideration in a farm design that supports all four pillars.
 
Last edited:
Is there a picture anywhere of how to actually build a world where the pillars are forced into certain places?

I'm getting a world ready on console and I was hoping to find a simple guide on how to do it, but no luck so far...
 
Back
Top Bottom