Пример #1
0
        public bool IsSuccess(IEnhancable enhancable)
        {
            if (enhancable == null)
            {
                throw new ArgumentNullException(nameof(enhancable));
            }

            return(!GetFailChance(enhancable.Enhancement).Chance());
        }
        private int GetSalvageValue(IEnhancable enhancable)
        {
            if (enhancable.Rarity == Enums.Equipment.ItemRarity.Basic)
            {
                return(0);
            }

            return((int)enhancable.Rarity * BaseValue);
        }
        public int GetCost(IEnhancable enhancable, int desiredEnhancement)
        {
            if (desiredEnhancement <= enhancable.Enhancement)
            {
                return(0);
            }

            int gausssum = desiredEnhancement.GaussSum();

            return(gausssum * RequiredParticles);
        }
        public void Enhance(IEnhancable enhancable, IEnumerable <Item> particles, int desiredEnhancement)
        {
            if (desiredEnhancement <= enhancable.Enhancement)
            {
                return;
            }

            int cost = GetCost(enhancable, desiredEnhancement);

            if (particles.Where(o => o.ItemId == EmpoweredParticle.Id).Count() != cost)
            {
                throw new InsufficientEmpoweredParticlesException();
            }

            enhancable.Enhancement = desiredEnhancement;

            if (enhancable.GetType() == typeof(Equipment))
            {
                equipmentGenerator.AdjustStats((Equipment)enhancable);
            }
        }
        public void Enhance(IEnhancable enhancable, IEnumerable <Item> particles)
        {
            if (particles.Where(o => o.ItemId == EmpoweredParticle.Id).Count() != ParticlesCost)
            {
                throw new InsufficientEmpoweredParticlesException();
            }

            var success = enhancementProbability.IsSuccess(enhancable);

            if (success)
            {
                enhancable.Enhancement += 1;
            }
            else
            {
                enhancable.Enhancement = 0;
            }

            if (enhancable.GetType() == typeof(Equipment))
            {
                equipmentGenerator.AdjustStats((Equipment)enhancable);
            }
        }
        public IEnumerable <Item> Salvage(IEnhancable enhancable, long userId)
        {
            var value = GetSalvageValue(enhancable);

            for (int i = 0; i < value; i++)
            {
                yield return(new Item()
                {
                    ItemId = EmpoweredParticle.Id,
                    Rarity = Enums.Equipment.ItemRarity.Basic,
                    UserId = userId,
                });
            }

            if (enhancable.Rarity != Enums.Equipment.ItemRarity.Basic && 33F.Chance())
            {
                yield return(new Item()
                {
                    ItemId = EquipmentToken.Get(enhancable.Rarity),
                    Rarity = enhancable.Rarity,
                    UserId = userId,
                });
            }
        }
 public int GetCost(IEnhancable enhancable, int desiredEnhancement)
 {
     return(RequiredParticles);
 }
 public void Enhance(IEnhancable enhancable, IEnumerable <Item> particles, int desiredEnhancement)
 {
     return;
 }
 public void Enhance(IEnhancable enhancable, IEnumerable <Item> particles)
 {
     return;
 }