public List <int> GetPossibleChestsToTrapify(StructureMap structures) { List <int> intList = new List <int>(); bool[] validTiles = new bool[TileID.Sets.GeneralPlacementTiles.Length]; for (int index = 0; index < validTiles.Length; ++index) { validTiles[index] = TileID.Sets.GeneralPlacementTiles[index]; } validTiles[21] = true; validTiles[467] = true; for (int index = 0; index < 8000; ++index) { Chest chest = Main.chest[index]; if (chest != null) { Point position1 = new Point(chest.x, chest.y); if (DeadMansChestBiome.IsAGoodSpot(position1)) { this.ClearCaches(); Point position2 = new Point(position1.X, position1.Y + 1); this.FindBoulderTrapSpots(position2); this.FindDartTrapSpots(position2); if (this.AreThereEnoughTraps() && (structures == null || structures.CanPlace(new Microsoft.Xna.Framework.Rectangle(position1.X, position1.Y, 1, 1), validTiles, 10))) { intList.Add(index); } } } } return(intList); }
public override bool Place(Point origin, StructureMap structures) { if (!DeadMansChestBiome.IsAGoodSpot(origin)) { return(false); } this.ClearCaches(); Point position = new Point(origin.X, origin.Y + 1); this.FindBoulderTrapSpots(position); this.FindDartTrapSpots(position); this.FindExplosiveTrapSpots(position); if (!this.AreThereEnoughTraps()) { return(false); } this.TurnGoldChestIntoDeadMansChest(origin); foreach (DeadMansChestBiome.DartTrapPlacementAttempt trapPlacementSpot in this._dartTrapPlacementSpots) { this.ActuallyPlaceDartTrap(trapPlacementSpot.position, trapPlacementSpot.directionX, trapPlacementSpot.x, trapPlacementSpot.y, trapPlacementSpot.xPush, trapPlacementSpot.t); } foreach (DeadMansChestBiome.WirePlacementAttempt wirePlacementSpot in this._wirePlacementSpots) { this.PlaceWireLine(wirePlacementSpot.position, wirePlacementSpot.dirX, wirePlacementSpot.dirY, wirePlacementSpot.steps); } foreach (DeadMansChestBiome.BoulderPlacementAttempt boulderPlacementSpot in this._boulderPlacementSpots) { this.ActuallyPlaceBoulderTrap(boulderPlacementSpot.position, boulderPlacementSpot.yPush, boulderPlacementSpot.requiredHeight, boulderPlacementSpot.bestType); } foreach (DeadMansChestBiome.ExplosivePlacementAttempt placementAttempt in this._explosivePlacementAttempt) { this.ActuallyPlaceExplosive(placementAttempt.position); } this.PlaceWiresForExplosives(origin); return(true); }