示例#1
0
        public string ApplyMagicItem(IEquipment MagicItem)
        {
            MagicItemStatBlock MI = (MagicItemStatBlock)MagicItem;

            try
            {
                MagicItemAbilities.Add(MagicItemAbilityReflectionWrapper.GetMagicItemAbility(MI.name, MI.ExtraAbilities));
            }
            catch (Exception ex)
            {
                throw new Exception("IndividualStatBlock_Combat-ApplyMagicItem", ex);
            }

            return(MI.name + " abilities added.");
        }
        private string ApplyMagicItem(IEquipment MagicItem)
        {
            StatBlockInfo.ACMods acMods_Computed = new StatBlockInfo.ACMods();
            MagicItemStatBlock   MI = (MagicItemStatBlock)MagicItem;

            try
            {
                MagicItemAbilitiesWrapper wrapper = MagicItemAbilityReflectionWrapper.GetMagicItemAbility(MI.name, MI.ExtraAbilities);

                _sbCheckerBaseInput.IndvSB.ApplyMagicItem(MagicItem);

                if (wrapper.EquimentBaseString.Length > 0)
                {
                    Dictionary <IEquipment, int> tempArmor = Equipment_Parse.ParseArmorSimple(new List <string> {
                        wrapper.EquimentBaseString
                    }, _armorBusiness);

                    if (tempArmor.Keys.First().EquipmentType == EquipmentType.Armor)
                    {
                        double Bonus = 0;
                        Armor  armor = (Armor)tempArmor.Keys.First();
                        if (armor.category == "shield")
                        {
                            if (armor.bonus.HasValue)
                            {
                                Bonus = Convert.ToInt32(armor.bonus);
                                if (armor.Broken)
                                {
                                    Bonus = Math.Floor(Bonus / 2);
                                }

                                acMods_Computed.Shield += Convert.ToInt32(Bonus) + armor.EnhancementBonus;
                            }
                        }
                        if (armor.category.Contains("armor"))
                        {
                            if (armor.bonus.HasValue)
                            {
                                Bonus = Convert.ToInt32(armor.bonus);
                                if (armor.Broken)
                                {
                                    Bonus = Math.Floor(Bonus / 2);
                                }

                                acMods_Computed.Armor += Convert.ToInt32(Bonus) + armor.EnhancementBonus;
                            }
                        }
                    }
                }

                _equipmentData.MagicItemAbilities.Add(wrapper);
            }
            catch (Exception ex)
            {
                _sbCheckerBaseInput.MessageXML.AddFail("SBChecker-ApplyMagicItem", ex.Message + "--- " + ex.InnerException);
            }

            _armorClassData.ACMods_Computed = acMods_Computed;

            return(MI.name + " abilities added.");
        }