Esempio n. 1
0
        protected void CalculateKoef(ICanBeEnchanted itemToEnchant)
        {
            var enchantmentDamageKoef = 1 + itemToEnchant.EnchantmentLevel * (BaseEnchantmentValue + EnchantmentValueEnc / 2 * (1 + itemToEnchant.EnchantmentLevel));

            itemToEnchant.MainStat.EnchantKoef = enchantmentDamageKoef;
            itemToEnchant.UpdateGoldValueKoef();
        }
Esempio n. 2
0
        public double GetEnchantChance(ICanBeEnchanted itemToEnchant, ScrollOfEnchant scrollOfEnchant)
        {
            var levelDiff = itemToEnchant.Level >= scrollOfEnchant.Level
                ? itemToEnchant.Level - scrollOfEnchant.Level
                : 0;
            var enchantChance = BaseEnchantChance * Math.Pow(EnchantmentChanceKoef, itemToEnchant.EnchantmentLevel + levelDiff);

            return(enchantChance);
        }
Esempio n. 3
0
        public bool CanBeEnchantedWith(ICanBeEnchanted itemToEnchant, ScrollOfEnchant scrollOfEnchant)
        {
            if (scrollOfEnchant is ScrollOfEnchantWeapon && itemToEnchant is Weapon ||
                scrollOfEnchant is ScrollOfEnchantArmor && itemToEnchant is Armor)
            {
                return(true);
            }

            return(false);
        }
Esempio n. 4
0
        public bool TryEnchant(ICanBeEnchanted itemToEnchant, ScrollOfEnchant scrollOfEnchant)
        {
            var enchantResult = Dice.TryGetChance(GetEnchantChance(itemToEnchant, scrollOfEnchant));

            if (enchantResult)
            {
                SetEnchantmentLevel(itemToEnchant, itemToEnchant.EnchantmentLevel + 1);
                return(true);
            }
            else
            {
                return(false);
            }
        }
Esempio n. 5
0
        private void УлучшитьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var item = GetSelectedItem();
            if (item == null)
                return;
                
            if (item is ICanBeEnchanted itemToEnchant)
            {
                _itemToEnchant = itemToEnchant;
                UpdateItemToEnchantSlot(_itemToEnchant);

                if (_scrollOfEnchant != null && !InventoryController.CanBeEnchantedWith(_itemToEnchant, _scrollOfEnchant))
                {
                    _scrollOfEnchant = null;
                    SetPictureBox(ScrollOfEnchantSlot, null);
                }
            }
            else if (item is ScrollOfEnchant scrollOfEnchant)
            {
                if (_itemToEnchant == null || InventoryController.CanBeEnchantedWith(_itemToEnchant, scrollOfEnchant))
                {
                    _scrollOfEnchant = scrollOfEnchant;
                    SetPictureBox(ScrollOfEnchantSlot, scrollOfEnchant);
                }
            }

            if (_itemToEnchant != null && _scrollOfEnchant != null)
            {
                EnchantChanceLabel.Text = InventoryController.GetItemEnchantChance(_itemToEnchant, _scrollOfEnchant)
                    .ToPercentString(2);

                EnchantButton.Text = $"Улучшить на +{_itemToEnchant.EnchantmentLevel + 1}";
            }
            else
            {
                EnchantChanceLabel.Text = "";
                EnchantButton.Text = "";
            }
        }
Esempio n. 6
0
 public void SetEnchantmentLevel(ICanBeEnchanted itemToEnchant, int newEnchantmentLevel)
 {
     itemToEnchant.EnchantmentLevel = newEnchantmentLevel;
     CalculateKoef(itemToEnchant);
 }
Esempio n. 7
0
 public bool CanBeEnchantedWith(ICanBeEnchanted itemToEnchant, ScrollOfEnchant scrollOfEnchant)
 => ForgeService.CanBeEnchantedWith(itemToEnchant, scrollOfEnchant);
Esempio n. 8
0
 public double GetItemEnchantChance(ICanBeEnchanted itemToEnchant, ScrollOfEnchant scrollOfEnchant)
 => ForgeService.EnchantManager.GetEnchantChance(itemToEnchant, scrollOfEnchant);
Esempio n. 9
0
 // TODO : Обобщить для интерфейса ICanBeEnchanted<TScrollOfEnchant>.
 public bool EnchantWeapon(ICanBeEnchanted itemToEnchant, ScrollOfEnchant scrollOfEnchant)
 => ForgeService.EnchantItem(itemToEnchant, scrollOfEnchant);
Esempio n. 10
0
 private void UpdateItemToEnchantSlot(ICanBeEnchanted itemToEnchant)
 {
     SetPictureBox(ItemToEnchantSlot, itemToEnchant);
 }