public ArtifactLootItems GenerateLoot(Artifact artifact)
        {
            var artifactType = artifact.Info.type;
            var info         = _artifactRepository.GetArtifactInfo(artifactType);

            if (info == null)
            {
                return(null);
            }

            var result = new List <LootItem>();

            var loots = _artifactRepository.GetArtifactLoots(artifactType).ToArray();

            if (loots.Length <= 0)
            {
                return(null);
            }

            do
            {
                foreach (var loot in loots)
                {
                    var chance = FastRandom.NextDouble();
                    if (chance > loot.Chance)
                    {
                        continue;
                    }

                    var builder  = loot.GetLootItemBuilder();
                    var lootItem = builder.Build();
                    result.Add(lootItem);
                }
            } while (result.Count < info.minimumLoot);

            return(new ArtifactLootItems(artifact.Position, result));
        }