public override PokemonInstance DeserializePokemonInstance(Stream stream) { byte[] buffer; int speciesId, natureId, experience, health; Guid guid, originalTrainerGuid; bool cheatPokemon; string nickname, originalTrainerName; Item heldItem; bool? gender; int pokeBallId; long catchTime; Stats <byte> effortValues, individualValues; Stats <int> currentStats; byte friendship; int[] moveIds; byte[] movePPs; PokemonInstance.NonVolatileStatusCondition nonVolatileStatusCondition; buffer = new byte[4]; stream.Read(buffer, 0, 4); speciesId = BitConverter.ToInt32(buffer, 0); buffer = new byte[16]; stream.Read(buffer, 0, 16); guid = new Guid(buffer); nickname = DeserializeString(stream); heldItem = DeserializeItem(stream); gender = DeserializeNullableBool(stream); buffer = new byte[4]; stream.Read(buffer, 0, 4); pokeBallId = BitConverter.ToInt32(buffer, 0); buffer = new byte[8]; stream.Read(buffer, 0, 8); catchTime = BitConverter.ToInt64(buffer, 0); originalTrainerName = DeserializeString(stream); buffer = new byte[16]; stream.Read(buffer, 0, 16); originalTrainerGuid = new Guid(buffer); cheatPokemon = DeserializeBool(stream); effortValues = DeserializeByteStats(stream); individualValues = DeserializeByteStats(stream); buffer = new byte[4]; stream.Read(buffer, 0, 4); natureId = BitConverter.ToInt32(buffer, 0); currentStats = DeserializeIntStats(stream); buffer = new byte[1]; stream.Read(buffer, 0, 1); friendship = buffer[0]; moveIds = new int[4]; for (int i = 0; i < 4; i++) { buffer = new byte[4]; stream.Read(buffer, 0, 4); moveIds[i] = BitConverter.ToInt32(buffer, 0); } movePPs = new byte[4]; for (int i = 0; i < 4; i++) { buffer = new byte[1]; stream.Read(buffer, 0, 1); movePPs[i] = buffer[0]; } buffer = new byte[4]; stream.Read(buffer, 0, 4); experience = BitConverter.ToInt32(buffer, 0); buffer = new byte[4]; stream.Read(buffer, 0, 4); nonVolatileStatusCondition = (PokemonInstance.NonVolatileStatusCondition)BitConverter.ToInt32(buffer, 0); buffer = new byte[4]; stream.Read(buffer, 0, 4); health = BitConverter.ToInt32(buffer, 0); return(PokemonFactory.GenerateFull( speciesId: speciesId, natureId: natureId, effortValues: effortValues, individualValues: individualValues, _moves: moveIds, movePPs: movePPs, experience: experience, nonVolatileStatusCondition: nonVolatileStatusCondition, null, _guid: guid, nickname: nickname, heldItem: heldItem, _health: health, gender: gender, currentStats: currentStats, pokeBallId: pokeBallId, originalTrainerName: originalTrainerName, _originalTrainerGuid: originalTrainerGuid, cheatPokemon: cheatPokemon, catchTime: catchTime, _friendship: friendship)); }