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

◆ Place()

override bool Terraria.GameContent.Biomes.CorruptionPitBiome.Place ( Point origin,
StructureMap structures )
inline

Definition at line 11 of file CorruptionPitBiome.cs.

12 {
13 if (WorldGen.SolidTile(origin.X, origin.Y) && GenBase._tiles[origin.X, origin.Y].wall == 3)
14 {
15 return false;
16 }
17 if (!WorldUtils.Find(origin, Searches.Chain(new Searches.Down(100), new Conditions.IsSolid()), out origin))
18 {
19 return false;
20 }
21 if (!WorldUtils.Find(new Point(origin.X - 4, origin.Y), Searches.Chain(new Searches.Down(5), new Conditions.IsTile(25).AreaAnd(8, 1)), out var _))
22 {
23 return false;
24 }
25 ShapeData shapeData = new ShapeData();
26 ShapeData shapeData2 = new ShapeData();
27 ShapeData shapeData3 = new ShapeData();
28 for (int i = 0; i < 6; i++)
29 {
30 WorldUtils.Gen(origin, new Shapes.Circle(GenBase._random.Next(10, 12) + i), Actions.Chain(new Modifiers.Offset(0, 5 * i + 5), new Modifiers.Blotches(3).Output(shapeData)));
31 }
32 for (int j = 0; j < 6; j++)
33 {
34 WorldUtils.Gen(origin, new Shapes.Circle(GenBase._random.Next(5, 7) + j), Actions.Chain(new Modifiers.Offset(0, 2 * j + 18), new Modifiers.Blotches(3).Output(shapeData2)));
35 }
36 for (int k = 0; k < 6; k++)
37 {
38 WorldUtils.Gen(origin, new Shapes.Circle(GenBase._random.Next(4, 6) + k / 2), Actions.Chain(new Modifiers.Offset(0, (int)(7.5 * (double)k) - 10), new Modifiers.Blotches(3).Output(shapeData3)));
39 }
40 ShapeData shapeData4 = new ShapeData(shapeData2);
41 shapeData2.Subtract(shapeData3, origin, origin);
42 shapeData4.Subtract(shapeData2, origin, origin);
43 Rectangle bounds = ShapeData.GetBounds(origin, shapeData, shapeData3);
44 if (!structures.CanPlace(bounds, ValidTiles, 2))
45 {
46 return false;
47 }
48 WorldUtils.Gen(origin, new ModShapes.All(shapeData), Actions.Chain(new Actions.SetTile(25, setSelfFrames: true), new Actions.PlaceWall(3)));
49 WorldUtils.Gen(origin, new ModShapes.All(shapeData2), new Actions.SetTile(0, setSelfFrames: true));
50 WorldUtils.Gen(origin, new ModShapes.All(shapeData3), new Actions.ClearTile(frameNeighbors: true));
51 WorldUtils.Gen(origin, new ModShapes.All(shapeData2), Actions.Chain(new Modifiers.IsTouchingAir(useDiagonals: true), new Modifiers.NotTouching(false, 25), new Actions.SetTile(23, setSelfFrames: true)));
52 WorldUtils.Gen(origin, new ModShapes.All(shapeData4), new Actions.PlaceWall(69));
53 structures.AddProtectedStructure(bounds, 2);
54 return true;
55 }
static GenAction Chain(params GenAction[] actions)
Definition Actions.cs:470
GenAction Output(ShapeData data)
Definition GenAction.cs:39
static UnifiedRandom _random
Definition GenBase.cs:9
GenCondition AreaAnd(int width, int height)
static GenSearch Chain(GenSearch search, params GenCondition[] conditions)
Definition Searches.cs:123
void Subtract(ShapeData shapeData, Point localOrigin, Point remoteOrigin)
Definition ShapeData.cs:58
static Rectangle GetBounds(Point origin, params ShapeData[] shapes)
Definition ShapeData.cs:66
void AddProtectedStructure(Rectangle area, int padding=0)
bool CanPlace(Rectangle area, int padding=0)
static bool Find(Point origin, GenSearch search, out Point result)
Definition WorldUtils.cs:27
static bool Gen(Point origin, GenShape shape, GenAction action)
Definition WorldUtils.cs:17

References Terraria.WorldBuilding.GenBase._random, Terraria.WorldBuilding.GenBase._tiles, Terraria.WorldBuilding.StructureMap.AddProtectedStructure(), Terraria.WorldBuilding.GenCondition.AreaAnd(), Terraria.WorldBuilding.StructureMap.CanPlace(), Terraria.WorldBuilding.Searches.Chain(), Terraria.WorldBuilding.Actions.Chain(), Terraria.WorldBuilding.WorldUtils.Find(), Terraria.WorldBuilding.WorldUtils.Gen(), Terraria.WorldBuilding.ShapeData.GetBounds(), Terraria.WorldBuilding.GenAction.Output(), Terraria.WorldGen.SolidTile(), Terraria.WorldBuilding.ShapeData.Subtract(), Terraria.GameContent.Biomes.CorruptionPitBiome.ValidTiles, Microsoft.Xna.Framework.Point.X, and Microsoft.Xna.Framework.Point.Y.