public static void Fill(MapBlock _block, int _worldSeed, EMapBlockTypes _baseType)
        {
            if (_baseType == EMapBlockTypes.NONE)
            {
                return;
            }

            switch (Constants.WORLD_SEED)
            {
            case 0:
                World.TheWorld.Avatar.GeoInfo.Layer.Ambient = FColor.Empty;
                _block.Map[16, 16] = ETerrains.GRAY_BRICK_WALL;
                _block.AddEssence(new IndoorLight(new LightSource(32, new FColor(1f, 1f, 0f, 0f)), EssenceHelper.GetFirstFoundedMaterial <MetalMaterial>()), new Point(10, 17));
                _block.AddEssence(new IndoorLight(new LightSource(32, new FColor(1f, 0f, 1f, 0f)), EssenceHelper.GetFirstFoundedMaterial <MetalMaterial>()), new Point(22, 22));
                _block.AddEssence(new IndoorLight(new LightSource(32, new FColor(1f, 0f, 0f, 1f)), EssenceHelper.GetFirstFoundedMaterial <MetalMaterial>()), new Point(22, 10));
                break;

            case 1:
                _block.AddEssence(EssenceHelper.GetFirstFoundedThing <ClosedDoor>(), new Point(2, 1));
                _block.AddEssence(EssenceHelper.GetFirstFoundedThing <ClosedDoor>(), new Point(1, 2));

                _block.AddEssence(EssenceHelper.GetRandomFakedItem <AbstractWeapon>(World.Rnd), new Point(4, 1));
                _block.AddEssence(EssenceHelper.GetRandomFakedItem <AbstractWeapon>(World.Rnd), new Point(3, 2));

                _block.AddEssence(EssenceHelper.GetRandomFakedItem <Ring>(World.Rnd), new Point(5, 5));
                _block.AddEssence(EssenceHelper.GetRandomFakedItem <StackOfAmmo>(World.Rnd), new Point(5, 5));
                break;

            case 2:
                _block.AddEssence(new MagicPlate(EssenceHelper.GetFirstFoundedMaterial <MetalMaterial>(), 0, EMagicPlateEffect.RANDOM_MONSTER_APPEAR), new Point(10, 10));
                _block.AddEssence(new Button(EssenceHelper.GetFirstFoundedMaterial <MetalMaterial>(), 0), new Point(1, 1));
                break;
            }
        }
Exemplo n.º 2
0
        private static void AddItems(MapBlock _block, Random _rnd)
        {
            var itmcnt = 20 + _rnd.Next(_rnd.Next(20));

            for (var i = 0; i < itmcnt; ++i)
            {
                var x = _rnd.Next(Constants.MAP_BLOCK_SIZE);
                var y = _rnd.Next(Constants.MAP_BLOCK_SIZE);

                var attr = TerrainAttribute.GetAttribute(_block.Map[x, y]);
                if (attr.IsPassable)
                {
                    var point = new Point(x, y);
                    var any   = _block.Objects.Where(_tuple => _tuple.Item2 == point).Select(_tuple => _tuple.Item1);
                    var thing = EssenceHelper.GetRandomFakedItem(_rnd);

                    if (any.Any(_thing => !(_thing is Item)))
                    {
                        continue;
                    }

                    _block.AddEssence(thing, point);
                }
            }
        }
Exemplo n.º 3
0
        protected override IEnumerable <Item> GenerateItems(Creature _creature)
        {
            var cnt = _creature.GetLuckRandom * 5.0;

            for (var i = 0; i < cnt; i++)
            {
                yield return(EssenceHelper.GetRandomFakedItem(World.Rnd));
            }
        }
Exemplo n.º 4
0
        public void Шмотки()
        {
            var stack = EssenceHelper.GetRandomFakedItem <StackOfAmmo>(World.Rnd);

            Avatar[1, 0].AddItem(stack);
            var s = (StackOfAmmo)Avatar[1, 0].ResolveFakeItem(Avatar, stack);

            s.Count = 10;
            SendKey(ConsoleKey.NumPad6);
            SendKey(ConsoleKey.OemComma);
            SendKey(ConsoleKey.NumPad5);
        }
Exemplo n.º 5
0
        public Avatar(WorldLayer _surface)
            : base(EALNouns.Avatar, _surface, 100, EIntellectGrades.INT)
        {
            if (!Constants.GAME_MODE)
            {
                return;
            }

            Tactic = ETactics.NORMAL;
            Luck   = 6;
            AddRole(new AvatarRole());
            Equip(EEquipmentPlaces.RIGHT_HAND, EssenceHelper.GetRandomFakedItem <AbstractMeleeWeapon>(World.Rnd));
            Equip(EEquipmentPlaces.MISSILE_WEAPON, EssenceHelper.GetFirstFoundedItem <AbstractRangedWeapon>());
            Tactic = ETactics.BERSERK;

            var ammo = EssenceHelper.GetRandomFakedItem <StackOfAmmo>(World.Rnd).Essence.Clone(this) as StackOfAmmo;

            ammo.Count = 100;
            Equip(EEquipmentPlaces.MISSILES, ammo);
            Equip(EEquipmentPlaces.TOOL, EssenceHelper.GetFirstFoundedItem <AbstractTorch>());
        }
Exemplo n.º 6
0
        private static void GenerateRandomItems(Random _rnd, MapBlock _block)
        {
            var itmcnt = 20 + _rnd.Next(_rnd.Next(20));

            for (var i = 0; i < itmcnt; ++i)
            {
                var x = _rnd.Next(Constants.MAP_BLOCK_SIZE);
                var y = _rnd.Next(Constants.MAP_BLOCK_SIZE);

                var attr = TerrainAttribute.GetAttribute(_block.Map[x, y]);
                if (attr.IsNotPassable)
                {
                    continue;
                }


                var point = new Point(x, y);
                var thing = World.Rnd.Next(2) == 0 ? EssenceHelper.GetFakedThing(_rnd) : EssenceHelper.GetRandomFakedItem(_rnd);

                if (thing.Is <Stair>())
                {
                    if (x == Constants.MAP_BLOCK_SIZE - 1 || y == Constants.MAP_BLOCK_SIZE - 1)
                    {
                        continue;
                    }
                }

                var any = _block.Objects.Where(_tuple => _tuple.Item2 == point).Select(_tuple => _tuple.Item1);

                if (thing is Item)
                {
                    if (any.Any(_thing => !(_thing is Item)))
                    {
                        continue;
                    }
                }
                else if (any.Any())
                {
                    continue;
                }

                _block.AddEssence(thing, point);
            }
        }