public void Execute(ISystemContainer systemContainer, Map map, MapGenCommand command, Vector offset)
        {
            var coordinate = new MapCoordinate(map.MapKey, offset + command.Vector);

            List <IEntity> itemList = systemContainer.ItemSystem.GetSpawnableItems();

            var itemGenerator = new EnchantedItemGenerator(systemContainer, itemList);
            var item          = itemGenerator.GenerateItem(itemList, 1, systemContainer.Random);

            systemContainer.PositionSystem.SetPosition(item, new MapCoordinate(map.MapKey, offset + command.Vector));
        }
        public override IEnumerable <IEntity> GenerateShopItems(ISystemContainer systemContainer, int numberOfItems, int itemLevel, IEnumerable <IEntity> itemList, IRandom random)
        {
            var itemGenerator = new EnchantedItemGenerator(systemContainer, itemList.ToList());

            var rare = RarityPicker.Rare;

            rare.Weight *= 3;

            var rarities = new List <RarityPicker> {
                RarityPicker.Magic, rare
            };

            for (int i = 0; i < numberOfItems; i++)
            {
                var item = itemGenerator.TunedGenerateItem(itemList.ToList(), itemLevel, random, rarities);

                yield return(item);
            }
        }
Exemplo n.º 3
0
        public bool Apply(EventType type, IEntity sender, object eventData)
        {
            if (sender.Has <Equipped>() && sender.Has <Challenge>())
            {
                var equippedItems = systemContainer.EquipmentSystem.GetEquippedItems(sender);
                var level         = sender.Get <Challenge>().ChallengeRating;

                var gen = new EnchantedItemGenerator(systemContainer, new List <IEntity>());

                foreach (var item in equippedItems)
                {
                    var rarity = systemContainer.Random.PickOne(RarityPicker.RarityPickers);

                    gen.Enchant(item, ItemClassHelper.Classify(item), level, systemContainer.Random, rarity);
                }
            }

            return(true);
        }