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; } }
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); } } }
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)); } }
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); }
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>()); }
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); } }