public void SetFromInventory(Character cd)
        {
            var job   = cd.Stats.nJob;
            var level = cd.Stats.nLevel;

            ItemPotential = new SecondaryStatValuesEx();

            nItemPAD  = 0;
            nItemPADr = 0;

            nItemPDD  = 0;
            nItemPDDr = 0;

            nItemMAD  = 0;
            nItemMADr = 0;

            nItemMDD  = 0;
            nItemMDDr = 0;

            nItemACC  = 0;
            nItemACCr = 0;

            nItemEVA  = 0;
            nItemEVAr = 0;

            nItemCraft = cd.BasicStats.nLUK + cd.BasicStats.nDEX + cd.BasicStats.nINT;

            // TODO calculate item sets

            set(cd.EquippedInventoryNormal);
            set(cd.EquippedInventoryCash);             // TODO iterate only slots that can have stats

            var weapon = cd.EquippedInventoryCash.Get((int)BodyPart.BP_WEAPON);

            int nWeaponItemId;

            if (weapon is null && job % 1000 / 100 == 5)
            {
                nItemPAD     += (int)(level > 30 ? 31 : level * 0.7 + 10);
                nWeaponItemId = 0;
            }
        // TODO maybe fill out the rest of these eventually

        public SecondaryStatValues()
        {
            ItemPotential = new SecondaryStatValuesEx();
        }