public string EncodedCharacterString(QfgCharacter character)
{
string str = string.Format("83-{25}-2-72-71-115-{0}-{1}-{2}-{3}-{4}-{5}-{6}-{7}-{8}-{9}-{10}-{11}-{12}-28-4-57-75-{13}-{14}-{15}-{16}-{17}-{18}-{19}-{20}-{21}-{22}-{23}-{24}-0-121-6-9991-9992-67-8-45-112-",
character.Strength.ToString(),
character.Intelligence.ToString(),
character.Agility.ToString(),
character.Vitality.ToString(),
character.Luck.ToString(),
character.WeaponUse.ToString(),
character.Parry.ToString(),
character.Dodge.ToString(),
character.Stealth.ToString(),
character.PickLocks.ToString(),
character.Throwing.ToString(),
character.Climbing.ToString(),
character.Magic.ToString(),
character.MagicSkillOpen.ToString(),
character.MagicSkillDetect.ToString(),
character.MagicSkillTrigger.ToString(),
character.MagicSkillDazzle.ToString(),
character.MagicSkillZap.ToString(),
character.MagicSkillCalm.ToString(),
character.MagicSkillFlame.ToString(),
character.MagicSkillFetch.ToString(),
character.InventoryDaggers.ToString(),
character.InventoryHealingPotions.ToString(),
character.InventoryMagicPotions.ToString(),
character.InventoryVigorPotions.ToString(),
((int)character.QfgClass).ToString()
);
string[] ar = str.Split('-');
List<int> decodedStrArray = new List<int>();
foreach (string st in ar)
{
if (st != "")
decodedStrArray.Add(Int32.Parse(st));
}
int total1 = 0xce;
int total2 = 0;
for (int i = 0; i < 35; i += 2)
{
total1 += decodedStrArray[i + 1];
}
for (int i = 1; i < 35; i += 2)
{
total2 += decodedStrArray[i + 1];
}
total1 &= 127;
total2 &= 127;
character.CheckSum1 = total1;
character.CheckSum2 = total2;
str = str.Replace("-9992-", "-" + total2.ToString() + "-");
str = str.Replace("-9991-", "-" + total1.ToString() + "-");
ar = null;
ar = str.Split('-');
decodedStrArray.Clear();
foreach (string st in ar)
{
if (st != "")
decodedStrArray.Add(Int32.Parse(st));
}
int prev = 0;// x53;
int index = 0;
List<int> encodedVal = new List<int>();
foreach (int val in decodedStrArray)
{
int encoded = val;
encoded ^= prev & 127;
if (index > 0)
encodedVal.Add(encoded);
prev = encoded;
index++;
}
List<string> encodedStrArray = new List<string>();
foreach (int val in encodedVal)
{
encodedStrArray.Add(val.ToString("X"));
}
string encodedValue = "";
for (int i = 0; i < encodedStrArray.Count; i++)
{
encodedValue += encodedStrArray[i].PadLeft(2, ' ').ToLower();
}
return encodedValue;
}