Beispiel #1
0
        public override void Paint(Level level)
        {
            base.Paint(level);
            var spot = new Dot(Rnd.Int(Left + 2, Right - 2), Rnd.Int(Top + 2, Bottom - 2));

            try {
                ChestRegistry.PlaceRandom(spot * 16 + new Vector2(8, 12), level.Area);
            } catch (Exception e) {
                Log.Error(e);
            }

            for (var x = Left + 1; x < Right - 1; x++)
            {
                for (var y = Top + 1; y < Bottom - 1; y++)
                {
                    if (Rnd.Chance(30))
                    {
                        continue;
                    }

                    var prop = new BreakableProp {
                        Sprite = infos[Rnd.Int(infos.Length)]
                    };

                    level.Area.Add(prop);
                    prop.BottomCenter = new Vector2(x + 0.5f, y + 1f) * 16 + Rnd.Vector(-4, 4);
                }
            }

            Painter.Set(level, spot, Tile.FloorD);
        }
 public override void Happen(Player player)
 {
     try {
         ChestRegistry.PlaceRandom(player.TopCenter + new Vector2(0, -2), player.Area);
     } catch (Exception ex) {
         Log.Error(ex);
     }
 }
Beispiel #3
0
        protected override bool Interact(Entity e)
        {
            if (e.GetComponent <HealthComponent>().ModifyHealth(-4, this, DamageType.Custom))
            {
                try {
                    ChestRegistry.PlaceRandom(BottomCenter + new Vector2(0, 12), Area);
                    Audio.PlaySfx("level_summon_chest");
                } catch (Exception ex) {
                    Log.Error(ex);
                }
            }

            return(true);
        }
Beispiel #4
0
        private Entity CreateReward()
        {
            if (Rnd.Chance(LevelSave.ChestRewardChance))
            {
                return(ChestRegistry.PlaceRandom(Vector2.Zero, Area));
            }

            var id = rewards[Rnd.Int(rewards.Length)];

            if (id == "bk:troll_bomb")
            {
                var bomb = new Bomb(null);
                Area.Add(bomb);

                return(bomb);
            }

            return(Items.CreateAndAdd(id, Area));
        }
Beispiel #5
0
        public void Free()
        {
            if (freed)
            {
                return;
            }

            freed = true;

            GetComponent <AnimationComponent>().Animation.Tag = "free";
            GetComponent <DialogComponent>().StartAndClose("trash_goblin_1", 5);

            Timer.Add(() => {
                try {
                    ChestRegistry.PlaceRandom(BottomCenter + new Vector2(0, 12), Area);
                } catch (Exception ex) {
                    Log.Error(ex);
                }
            }, 3f);
        }
Beispiel #6
0
        public override void Paint(Level level)
        {
            Entity chest = null;

            if (Rnd.Chance(10))
            {
                chest = new ProtoChest();
            }
            else
            {
                try {
                    chest = ChestRegistry.PlaceRandom(Vector2.Zero, level.Area);
                } catch (Exception e) {
                    Log.Error(e);
                    chest = new WoodenChest();
                }
            }

            level.Area.Add(chest);
            chest.BottomCenter = GetCenter() * 16 + new Vector2(8, 8);
        }