public override void Paint(Level level) { if (LevelSave.BiomeGenerated is IceBiome) { var clip = Painter.Clip; Painter.Clip = null; Painter.Rect(level, this, 0, Tile.WallB); Painter.Clip = clip; } var t = Tiles.Pick(Tile.Chasm, Tile.WallA, Tile.WallB, Tile.Planks); if (Rnd.Chance()) { Painter.Set(level, new Dot(Left + 1, Top + 1), t); Painter.Set(level, new Dot(Right - 1, Bottom - 1), t); } if (Rnd.Chance()) { Painter.Set(level, new Dot(Right - 1, Top + 1), t); Painter.Set(level, new Dot(Left + 1, Bottom - 1), t); } if (Rnd.Chance(10 + Run.Scourge * 5)) { var cn = GetCenter() * 16; var c = Rnd.Int(2, 4); for (var i = 0; i < c; i++) { var stand = new ScourgedStand(); level.Area.Add(stand); stand.Center = cn + new Vector2(16 + (i - c / 2f) * 32, 8); stand.SetItem(Items.CreateAndAdd(Scourge.GenerateItemId(), level.Area), stand); } return; } var center = GetCenter() * 16 + new Vector2(8); if (Rnd.Chance(5)) { var chest = new ProtoChest(); level.Area.Add(chest); chest.BottomCenter = center; return; } switch (Rnd.Int(GlobalSave.IsTrue(ShopNpc.Gobetta) ? 6 : 5)) { case 0: { for (var i = 0; i < Rnd.Int(1, 3); i++) { Items.CreateAndAdd("bk:heart", level.Area).Center = center; } break; } case 1: { for (var i = 0; i < Rnd.Int(1, 4); i++) { Items.CreateAndAdd("bk:shield", level.Area).Center = center; } break; } case 2: { var stand = new ItemStand(); level.Area.Add(stand); stand.BottomCenter = center; stand.SetItem(Items.CreateAndAdd(Items.Generate(ItemPool.Treasure), level.Area), null); break; } case 3: { var a = Rnd.Chance(); var c = Rnd.Int(1, a ? 3 : 4); for (var i = 0; i < c; i++) { var chest = a ? (Chest) new StoneChest() : new RedChest(); level.Area.Add(chest); chest.BottomCenter = center - new Vector2((c / 2f - i) * 20, 0); } break; } case 4: { for (var i = 0; i < Rnd.Int(6, 12); i++) { Items.CreateAndAdd("bk:coin", level.Area).Center = center; } break; } case 5: { Gobetta.Place(GetTileCenter() * 16 + new Vector2(8, 8), level.Area); break; } } }
public override void Paint(Level level) { base.Paint(level); Gobetta.Place(GetTileCenter() * 16 + new Vector2(8, 8), level.Area); }
public override void Paint(Level level) { if (LevelSave.BiomeGenerated is IceBiome) { var clip = Painter.Clip; Painter.Clip = null; Painter.Rect(level, this, 0, Tile.WallB); Painter.Clip = clip; } Painter.Rect(level, this, 1, Tile.WallA); var exit = new HiddenExit { id = "dm" }; level.Area.Add(exit); exit.BottomCenter = GetCenter() * 16 + new Vector2(8, 8); var points = new List <Vector2>(); var a = false; if (Rnd.Chance(60)) { a = true; points.Add(new Vector2(Left + 4.5f, Top + 4.5f) * 16); } if (Rnd.Chance(60)) { a = true; points.Add(new Vector2(Right - 3.5f, Bottom - 4f) * 16); } if (Rnd.Chance(60)) { a = true; points.Add(new Vector2(Right - 3.5f, Top + 4.5f) * 16); } if (!a || Rnd.Chance(60)) { points.Add(new Vector2(Left + 4.5f, Bottom - 4f) * 16); } var types = new List <byte> { /*0, 1, 2, 3,*/ 4 /*5, 6, 7, 8*/ }; if (GlobalSave.IsTrue(ShopNpc.Roger)) { types.Add(0); } if (GlobalSave.IsTrue(ShopNpc.Boxy)) { types.Add(1); } if (GlobalSave.IsTrue(ShopNpc.Snek)) { types.Add(2); } if (GlobalSave.IsTrue(ShopNpc.Vampire)) { types.Add(5); } if (GlobalSave.IsTrue(ShopNpc.Nurse)) { types.Add(6); } if (GlobalSave.IsTrue(ShopNpc.Elon)) { types.Add(7); } if (GlobalSave.IsTrue(ShopNpc.Duck)) { types.Add(8); } foreach (var p in points) { var i = Rnd.Int(types.Count); var tp = types[i]; types.RemoveAt(i); switch (tp) { case 0: { Roger.Place(p, level.Area); break; } case 1: { Boxy.Place(p, level.Area); break; } case 2: { Snek.Place(p, level.Area); break; } case 3: { Gobetta.Place(p, level.Area); break; } case 4: { TrashGoblin.Place(p, level.Area); break; } case 5: { Vampire.Place(p, level.Area); break; } case 6: { Nurse.Place(p, level.Area); break; } case 7: { DungeonElon.Place(p, level.Area); break; } case 8: { DungeonDuck.Place(p, level.Area); break; } } if (types.Count == 0) { break; } } }