//public Battle_Commands BattleCommand { get; private set; } = null;

            public override void Read(BinaryReader br, int i)
            {
                Icon = Icons.ID.Ability_Character2;
                Name = Memory.Strings.Read(Strings.FileID.KERNEL, id, i * 2);
                //0x0000	2 bytes Offset to name
                Description = Memory.Strings.Read(Strings.FileID.KERNEL, id, i * 2 + 1);
                //0x0002	2 bytes Offset to description
                br.BaseStream.Seek(4, SeekOrigin.Current);
                AP = br.ReadByte();
                //0x0004  1 byte AP Required to learn ability
                byte[] tmp   = br.ReadBytes(3);
                int    shift = 0;

                Flags = (CharacterAbilityFlags)(tmp[2] << (16 + shift) | tmp[1] << (8 + shift) | tmp[0] << (shift));
                //Flags = new BitArray(br.ReadBytes(3));
                //0x0005  3 byte Flags
            }
 private CharacterAbilities
     (FF8String name, FF8String description, byte ap, CharacterAbilityFlags flags) :
     base(name, description, ap, Icon) => Flags = flags;