public static void mod_AddArmorClassModifiers([NotNull] ModifiableValueArmorClass acStat, bool flatfooted, bool touch, bool ignoreDexterityBonus = false)
        {
            foreach (ModifiableValue.Modifier displayModifier in acStat.GetDisplayModifiers())
            {
                if (displayModifier.ModValue == 0 || flatfooted && !ModifiableValueArmorClass.AllowedForFlatFooted(displayModifier) || touch && !ModifiableValueArmorClass.AllowedForTouch(displayModifier) || ignoreDexterityBonus && displayModifier.ModDescriptor == ModifierDescriptor.DexterityBonus)
                {
                    continue;
                }

                ModifierDescriptor descriptor = displayModifier.ModDescriptor == ModifierDescriptor.None ? ModifierDescriptor.Other : displayModifier.ModDescriptor;

                var bonusSource = (IUIDataProvider)(displayModifier.Source ?? (object)displayModifier.ItemSource);

                StatModifiersBreakdown.AddBonus(displayModifier.ModValue, bonusSource, descriptor);
            }
        }
        public static void mod_AddStatModifiers([NotNull] ModifiableValue stat)
        {
            foreach (ModifiableValue.Modifier displayModifier in stat.GetDisplayModifiers())
            {
                if (displayModifier.ModValue == 0)
                {
                    continue;
                }

                ModifierDescriptor descriptor = displayModifier.ModDescriptor == ModifierDescriptor.None ? ModifierDescriptor.Other : displayModifier.ModDescriptor;

                var bonusSource = (IUIDataProvider)(displayModifier.Source ?? (object)displayModifier.ItemSource);

                StatModifiersBreakdown.AddBonus(displayModifier.ModValue, bonusSource, descriptor);
            }
        }