public static void DecodeMagicAttack(InteractPacket *packet) { packet->MagicType = (ushort)(0xFFFF & (Common.ExchangeShortBits((packet->MagicType ^ packet->UID ^ 0x915d), 16 - 3) + 0x14be)); packet->MagicLevel = (ushort)(((byte)packet->MagicLevel) ^ 0x21); packet->Target = (Common.ExchangeLongBits(packet->Target, 13) ^ packet->UID ^ 0x5f2d2463) + 0x8b90b51a; packet->X = (ushort)(0xFFFF & (Common.ExchangeShortBits((packet->X ^ packet->UID ^ 0x2ed6), 16 - 1) + 0xdd12)); packet->Y = (ushort)(0xFFFF & (Common.ExchangeShortBits((packet->Y ^ packet->UID ^ 0xb99b), 16 - 5) + 0x76de)); }
public static void EncodeMagicAttack(InteractPacket *packet) { packet->MagicType = (ushort)(Common.ExchangeShortBits(packet->MagicType - (uint)0x14be, 3) ^ packet->UID ^ 0x915d); packet->Target = Common.ExchangeLongBits(((packet->Target - 0x8b90b51a) ^ packet->UID ^ 0x5f2d2463), 32 - 13); packet->X = (ushort)(Common.ExchangeShortBits(packet->X - (uint)0xdd12, 1) ^ packet->UID ^ 0x2ed6); packet->Y = (ushort)(Common.ExchangeShortBits((packet->Y - (uint)0x76de), 5) ^ packet->UID ^ 0xb99b); packet->MagicLevel = (ushort)((packet->MagicLevel + 0x100 * (packet->Timestamp % 0x100)) ^ 0x3721); }