here is how to decrypt
Code:
#region GetSkillID
SpellID = Convert.ToUInt16(((long)attack.ToArray()[24] & 0xFF) | (((long)attack.ToArray()[25] & 0xFF) << 8));
SpellID ^= (ushort)0x915d;
SpellID ^= (ushort)attacker.UID;
SpellID = (ushort)(SpellID << 0x3 | SpellID >> 0xd);
SpellID -= 0xeb42;
#endregion
#region GetCoords
X = (ushort)((attack.ToArray()[16] & 0xFF) | ((attack.ToArray()[17] & 0xFF) << 8));
X = (ushort)(X ^ (uint)(attacker.UID & 0xffff) ^ 0x2ed6);
X = (ushort)(((X << 1) | ((X & 0x8000) >> 15)) & 0xffff);
X = (ushort)((X | 0xffff0000) - 0xffff22ee);
Y = (ushort)((attack.ToArray()[18] & 0xFF) | ((attack.ToArray()[19] & 0xFF) << 8));
Y = (ushort)(Y ^ (uint)(attacker.UID & 0xffff) ^ 0xb99b);
Y = (ushort)(((Y << 5) | ((Y & 0xF800) >> 11)) & 0xffff);
Y = (ushort)((Y | 0xffff0000) - 0xffff8922);
#endregion
#region GetTarget
Target = ((uint)attack.ToArray()[12] & 0xFF) | (((uint)attack.ToArray()[13] & 0xFF) << 8) | (((uint)attack.ToArray()[14] & 0xFF) << 16) | (((uint)attack.ToArray()[15] & 0xFF) << 24);
Target = ((((Target & 0xffffe000) >> 13) | ((Target & 0x1fff) << 19)) ^ 0x5F2D2463 ^ attacker.UID) - 0x746F4AE6;
#endregion
i would love a spoon feeding but i would really appreciate some mathematical references and tutorials






