public IEnumerable <byte> Encode() { var result = new List <byte>(); var encodedName = FF8String.Encode(Name).Take(12).ToList(); result.AddRange(encodedName); result.AddRange(Enumerable.Repeat <byte>(0, 12 - encodedName.Count)); result.AddRange(BitConverter.GetBytes(Exp)); result.Add(Unknown); result.Add(Exists); result.AddRange(BitConverter.GetBytes(HP)); var abilities = new byte[16]; Abilities.CopyTo(abilities, 0); result.AddRange(abilities); result.AddRange(AP); result.AddRange(BitConverter.GetBytes(Kills)); result.AddRange(BitConverter.GetBytes(Deaths)); result.Add(CurrentAbility); var forgotten = new byte[3]; ForgottenAbilities.CopyTo(forgotten, 0); result.AddRange(forgotten); return(result); }