diff --git a/PokemonGo/RocketAPI/Client.cs b/PokemonGo/RocketAPI/Client.cs
index a1d5ce4..db3837a 100644
--- a/PokemonGo/RocketAPI/Client.cs
+++ b/PokemonGo/RocketAPI/Client.cs
@@ -234,5 +234,37 @@ namespace PokemonGo.RocketAPI
return await _httpClient.PostProto<Request, FortSearchResponse>($"https://{_apiUrl}/rpc", fortDetailRequest);
}
+ public async Task<EncounterResponse> EncounterPokemon(ulong encounterId, string spawnPointGuid)
+ {
+ var customRequest = new Request.Types.EncounterRequest()
+ {
+ EncounterId = encounterId,
+ SpawnpointId = spawnPointGuid,
+ PlayerLatDegrees = Utils.FloatAsUlong(_currentLat),
+ PlayerLngDegrees = Utils.FloatAsUlong(_currentLng)
+ };
+
+ var encounterResponse = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30, new Request.Types.Requests() { Type = (int)RequestType.ENCOUNTER, Message = customRequest.ToByteString() });
+ return await _httpClient.PostProto<Request, EncounterResponse>($"https://{_apiUrl}/rpc", encounterResponse);
+ }
+
+ public async Task<CatchPokemonResponse> CatchPokemon(ulong encounterId, string spawnPointGuid, double pokemonLat, double pokemonLng)
+ {
+ var customRequest = new Request.Types.CatchPokemonRequest()
+ {
+ EncounterId = encounterId,
+ Pokeball = (int) MiscEnums.Item.ITEM_POKE_BALL,
+ SpawnPointGuid = spawnPointGuid,
+ HitPokemon = 1,
+ NormalizedReticleSize = Utils.FloatAsUlong(1.86440348625),
+ SpinModifier = Utils.FloatAsUlong(0.00655560661107)
+ };
+
+ var catchPokemonRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30, new Request.Types.Requests() { Type = (int)RequestType.CATCH_POKEMON, Message = customRequest.ToByteString() });
+ return await _httpClient.PostProto<Request, CatchPokemonResponse>($"https://{_apiUrl}/rpc", catchPokemonRequest);
+ }
+
+
+
}
}
diff --git a/PokemonGo/RocketAPI/Console/Program.cs b/PokemonGo/RocketAPI/Console/Program.cs
index 68a23a9..c03fac0 100644
--- a/PokemonGo/RocketAPI/Console/Program.cs
+++ b/PokemonGo/RocketAPI/Console/Program.cs
@@ -32,6 +32,7 @@ namespace PokemonGo.RocketAPI.Console
var mapObjects = await client.GetMapObjects();
await ExecuteFarmingPokestops(client);
+ await ExecuteCatchAllNearbyPokemons(client);
}
private static async Task ExecuteFarmingPokestops(Client client)
@@ -52,6 +53,22 @@ namespace PokemonGo.RocketAPI.Console
}
}
+ private static async Task ExecuteCatchAllNearbyPokemons(Client client)
+ {
+ var mapObjects = await client.GetMapObjects();
+
+ var pokemons = mapObjects.Payload[0].Profile.SelectMany(i => i.MapPokemon);
+
+ foreach (var pokemon in pokemons)
+ {
+ var update = await client.UpdatePlayerLocation(pokemon.Latitude, pokemon.Longitude);
+ var encounterPokemonRespone = await client.EncounterPokemon(pokemon.EncounterId, pokemon.SpawnpointId);
+ var caughtPokemonResponse = await client.CatchPokemon(pokemon.EncounterId, pokemon.SpawnpointId, pokemon.Latitude, pokemon.Longitude);
+ await Task.Delay(15000);
+ }
+
+ }
+
private static string GetFriendlyItemsString(IEnumerable<FortSearchResponse.Types.Item> items)
{
var sb = new StringBuilder();
diff --git a/PokemonGo/RocketAPI/GeneratedCode/CatchPokemonResponse.cs b/PokemonGo/RocketAPI/GeneratedCode/CatchPokemonResponse.cs
new file mode 100644
index 0000000..22f939b
--- /dev/null
+++ b/PokemonGo/RocketAPI/GeneratedCode/CatchPokemonResponse.cs
@@ -0,0 +1,925 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: CatchPokemonResponse.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace PokemonGo.RocketAPI.GeneratedCode {
+
+ /// <summary>Holder for reflection information generated from CatchPokemonResponse.proto</summary>
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public static partial class CatchPokemonResponseReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for CatchPokemonResponse.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static CatchPokemonResponseReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "ChpDYXRjaFBva2Vtb25SZXNwb25zZS5wcm90bxIhUG9rZW1vbkdvLlJvY2tl",
+ "dEFQSS5HZW5lcmF0ZWRDb2RlIpUFChRDYXRjaFBva2Vtb25SZXNwb25zZRIQ",
+ "Cgh1bmtub3duMRgBIAEoBRIQCgh1bmtub3duMhgCIAEoAxIPCgdhcGlfdXJs",
+ "GAMgASgJElIKCHVua25vd242GAYgASgLMkAuUG9rZW1vbkdvLlJvY2tldEFQ",
+ "SS5HZW5lcmF0ZWRDb2RlLkNhdGNoUG9rZW1vblJlc3BvbnNlLlVua25vd242",
+ "ElIKCHVua25vd243GAcgASgLMkAuUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5l",
+ "cmF0ZWRDb2RlLkNhdGNoUG9rZW1vblJlc3BvbnNlLlVua25vd243ElAKB3Bh",
+ "eWxvYWQYZCADKAsyPy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENv",
+ "ZGUuQ2F0Y2hQb2tlbW9uUmVzcG9uc2UuUGF5bG9hZBIUCgxlcnJvck1lc3Nh",
+ "Z2UYZSABKAkalwEKCFVua25vd242EhAKCHVua25vd24xGAEgASgFElsKCHVu",
+ "a25vd24yGAIgASgLMkkuUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRD",
+ "b2RlLkNhdGNoUG9rZW1vblJlc3BvbnNlLlVua25vd242LlVua25vd24yGhwK",
+ "CFVua25vd24yEhAKCHVua25vd24xGAEgASgMGkMKCFVua25vd243EhEKCXVu",
+ "a25vd243MRgBIAEoDBIRCgl1bmtub3duNzIYAiABKAMSEQoJdW5rbm93bjcz",
+ "GAMgASgMGlkKB1BheWxvYWQSDgoGU3RhdHVzGAEgASgFEhMKC01pc3NQZXJj",
+ "ZW50GAIgASgFEhkKEUNhcHR1cmVkUG9rZW1vbklkGAMgASgFEg4KBlNjb3Jl",
+ "cxgEIAEoBWIGcHJvdG8z"));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse), global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Parser, new[]{ "Unknown1", "Unknown2", "ApiUrl", "Unknown6", "Unknown7", "Payload", "ErrorMessage" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6), global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6.Parser, new[]{ "Unknown1", "Unknown2" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6.Types.Unknown2), global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6.Types.Unknown2.Parser, new[]{ "Unknown1" }, null, null, null)}),
+ new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown7), global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown7.Parser, new[]{ "Unknown71", "Unknown72", "Unknown73" }, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Payload), global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Payload.Parser, new[]{ "Status", "MissPercent", "CapturedPokemonId", "Scores" }, null, null, null)})
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class CatchPokemonResponse : pb::IMessage<CatchPokemonResponse> {
+ private static readonly pb::MessageParser<CatchPokemonResponse> _parser = new pb::MessageParser<CatchPokemonResponse>(() => new CatchPokemonResponse());
+ public static pb::MessageParser<CatchPokemonResponse> Parser { get { return _parser; } }
+
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponseReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ public CatchPokemonResponse() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public CatchPokemonResponse(CatchPokemonResponse other) : this() {
+ unknown1_ = other.unknown1_;
+ unknown2_ = other.unknown2_;
+ apiUrl_ = other.apiUrl_;
+ Unknown6 = other.unknown6_ != null ? other.Unknown6.Clone() : null;
+ Unknown7 = other.unknown7_ != null ? other.Unknown7.Clone() : null;
+ payload_ = other.payload_.Clone();
+ errorMessage_ = other.errorMessage_;
+ }
+
+ public CatchPokemonResponse Clone() {
+ return new CatchPokemonResponse(this);
+ }
+
+ /// <summary>Field number for the "unknown1" field.</summary>
+ public const int Unknown1FieldNumber = 1;
+ private int unknown1_;
+ public int Unknown1 {
+ get { return unknown1_; }
+ set {
+ unknown1_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "unknown2" field.</summary>
+ public const int Unknown2FieldNumber = 2;
+ private long unknown2_;
+ public long Unknown2 {
+ get { return unknown2_; }
+ set {
+ unknown2_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "api_url" field.</summary>
+ public const int ApiUrlFieldNumber = 3;
+ private string apiUrl_ = "";
+ public string ApiUrl {
+ get { return apiUrl_; }
+ set {
+ apiUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "unknown6" field.</summary>
+ public const int Unknown6FieldNumber = 6;
+ private global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6 unknown6_;
+ public global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6 Unknown6 {
+ get { return unknown6_; }
+ set {
+ unknown6_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "unknown7" field.</summary>
+ public const int Unknown7FieldNumber = 7;
+ private global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown7 unknown7_;
+ public global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown7 Unknown7 {
+ get { return unknown7_; }
+ set {
+ unknown7_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "payload" field.</summary>
+ public const int PayloadFieldNumber = 100;
+ private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Payload> _repeated_payload_codec
+ = pb::FieldCodec.ForMessage(802, global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Payload.Parser);
+ private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Payload> payload_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Payload>();
+ public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Payload> Payload {
+ get { return payload_; }
+ }
+
+ /// <summary>Field number for the "errorMessage" field.</summary>
+ public const int ErrorMessageFieldNumber = 101;
+ private string errorMessage_ = "";
+ /// <summary>
+ /// Should be moved to an error-proto file if error is always 101 field
+ /// </summary>
+ public string ErrorMessage {
+ get { return errorMessage_; }
+ set {
+ errorMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as CatchPokemonResponse);
+ }
+
+ public bool Equals(CatchPokemonResponse other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Unknown1 != other.Unknown1) return false;
+ if (Unknown2 != other.Unknown2) return false;
+ if (ApiUrl != other.ApiUrl) return false;
+ if (!object.Equals(Unknown6, other.Unknown6)) return false;
+ if (!object.Equals(Unknown7, other.Unknown7)) return false;
+ if(!payload_.Equals(other.payload_)) return false;
+ if (ErrorMessage != other.ErrorMessage) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
+ if (Unknown2 != 0L) hash ^= Unknown2.GetHashCode();
+ if (ApiUrl.Length != 0) hash ^= ApiUrl.GetHashCode();
+ if (unknown6_ != null) hash ^= Unknown6.GetHashCode();
+ if (unknown7_ != null) hash ^= Unknown7.GetHashCode();
+ hash ^= payload_.GetHashCode();
+ if (ErrorMessage.Length != 0) hash ^= ErrorMessage.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Unknown1 != 0) {
+ output.WriteRawTag(8);
+ output.WriteInt32(Unknown1);
+ }
+ if (Unknown2 != 0L) {
+ output.WriteRawTag(16);
+ output.WriteInt64(Unknown2);
+ }
+ if (ApiUrl.Length != 0) {
+ output.WriteRawTag(26);
+ output.WriteString(ApiUrl);
+ }
+ if (unknown6_ != null) {
+ output.WriteRawTag(50);
+ output.WriteMessage(Unknown6);
+ }
+ if (unknown7_ != null) {
+ output.WriteRawTag(58);
+ output.WriteMessage(Unknown7);
+ }
+ payload_.WriteTo(output, _repeated_payload_codec);
+ if (ErrorMessage.Length != 0) {
+ output.WriteRawTag(170, 6);
+ output.WriteString(ErrorMessage);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Unknown1 != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
+ }
+ if (Unknown2 != 0L) {
+ size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown2);
+ }
+ if (ApiUrl.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(ApiUrl);
+ }
+ if (unknown6_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown6);
+ }
+ if (unknown7_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown7);
+ }
+ size += payload_.CalculateSize(_repeated_payload_codec);
+ if (ErrorMessage.Length != 0) {
+ size += 2 + pb::CodedOutputStream.ComputeStringSize(ErrorMessage);
+ }
+ return size;
+ }
+
+ public void MergeFrom(CatchPokemonResponse other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Unknown1 != 0) {
+ Unknown1 = other.Unknown1;
+ }
+ if (other.Unknown2 != 0L) {
+ Unknown2 = other.Unknown2;
+ }
+ if (other.ApiUrl.Length != 0) {
+ ApiUrl = other.ApiUrl;
+ }
+ if (other.unknown6_ != null) {
+ if (unknown6_ == null) {
+ unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6();
+ }
+ Unknown6.MergeFrom(other.Unknown6);
+ }
+ if (other.unknown7_ != null) {
+ if (unknown7_ == null) {
+ unknown7_ = new global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown7();
+ }
+ Unknown7.MergeFrom(other.Unknown7);
+ }
+ payload_.Add(other.payload_);
+ if (other.ErrorMessage.Length != 0) {
+ ErrorMessage = other.ErrorMessage;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 8: {
+ Unknown1 = input.ReadInt32();
+ break;
+ }
+ case 16: {
+ Unknown2 = input.ReadInt64();
+ break;
+ }
+ case 26: {
+ ApiUrl = input.ReadString();
+ break;
+ }
+ case 50: {
+ if (unknown6_ == null) {
+ unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6();
+ }
+ input.ReadMessage(unknown6_);
+ break;
+ }
+ case 58: {
+ if (unknown7_ == null) {
+ unknown7_ = new global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown7();
+ }
+ input.ReadMessage(unknown7_);
+ break;
+ }
+ case 802: {
+ payload_.AddEntriesFrom(input, _repeated_payload_codec);
+ break;
+ }
+ case 810: {
+ ErrorMessage = input.ReadString();
+ break;
+ }
+ }
+ }
+ }
+
+ #region Nested types
+ /// <summary>Container for nested types declared in the CatchPokemonResponse message type.</summary>
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public static partial class Types {
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Unknown6 : pb::IMessage<Unknown6> {
+ private static readonly pb::MessageParser<Unknown6> _parser = new pb::MessageParser<Unknown6>(() => new Unknown6());
+ public static pb::MessageParser<Unknown6> Parser { get { return _parser; } }
+
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Descriptor.NestedTypes[0]; }
+ }
+
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ public Unknown6() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Unknown6(Unknown6 other) : this() {
+ unknown1_ = other.unknown1_;
+ Unknown2 = other.unknown2_ != null ? other.Unknown2.Clone() : null;
+ }
+
+ public Unknown6 Clone() {
+ return new Unknown6(this);
+ }
+
+ /// <summary>Field number for the "unknown1" field.</summary>
+ public const int Unknown1FieldNumber = 1;
+ private int unknown1_;
+ public int Unknown1 {
+ get { return unknown1_; }
+ set {
+ unknown1_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "unknown2" field.</summary>
+ public const int Unknown2FieldNumber = 2;
+ private global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6.Types.Unknown2 unknown2_;
+ public global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6.Types.Unknown2 Unknown2 {
+ get { return unknown2_; }
+ set {
+ unknown2_ = value;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Unknown6);
+ }
+
+ public bool Equals(Unknown6 other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Unknown1 != other.Unknown1) return false;
+ if (!object.Equals(Unknown2, other.Unknown2)) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
+ if (unknown2_ != null) hash ^= Unknown2.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Unknown1 != 0) {
+ output.WriteRawTag(8);
+ output.WriteInt32(Unknown1);
+ }
+ if (unknown2_ != null) {
+ output.WriteRawTag(18);
+ output.WriteMessage(Unknown2);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Unknown1 != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
+ }
+ if (unknown2_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown2);
+ }
+ return size;
+ }
+
+ public void MergeFrom(Unknown6 other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Unknown1 != 0) {
+ Unknown1 = other.Unknown1;
+ }
+ if (other.unknown2_ != null) {
+ if (unknown2_ == null) {
+ unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6.Types.Unknown2();
+ }
+ Unknown2.MergeFrom(other.Unknown2);
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 8: {
+ Unknown1 = input.ReadInt32();
+ break;
+ }
+ case 18: {
+ if (unknown2_ == null) {
+ unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6.Types.Unknown2();
+ }
+ input.ReadMessage(unknown2_);
+ break;
+ }
+ }
+ }
+ }
+
+ #region Nested types
+ /// <summary>Container for nested types declared in the Unknown6 message type.</summary>
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public static partial class Types {
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Unknown2 : pb::IMessage<Unknown2> {
+ private static readonly pb::MessageParser<Unknown2> _parser = new pb::MessageParser<Unknown2>(() => new Unknown2());
+ public static pb::MessageParser<Unknown2> Parser { get { return _parser; } }
+
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Types.Unknown6.Descriptor.NestedTypes[0]; }
+ }
+
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ public Unknown2() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Unknown2(Unknown2 other) : this() {
+ unknown1_ = other.unknown1_;
+ }
+
+ public Unknown2 Clone() {
+ return new Unknown2(this);
+ }
+
+ /// <summary>Field number for the "unknown1" field.</summary>
+ public const int Unknown1FieldNumber = 1;
+ private pb::ByteString unknown1_ = pb::ByteString.Empty;
+ public pb::ByteString Unknown1 {
+ get { return unknown1_; }
+ set {
+ unknown1_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Unknown2);
+ }
+
+ public bool Equals(Unknown2 other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Unknown1 != other.Unknown1) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Unknown1.Length != 0) hash ^= Unknown1.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Unknown1.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteBytes(Unknown1);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Unknown1.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown1);
+ }
+ return size;
+ }
+
+ public void MergeFrom(Unknown2 other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Unknown1.Length != 0) {
+ Unknown1 = other.Unknown1;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 10: {
+ Unknown1 = input.ReadBytes();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ }
+ #endregion
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Unknown7 : pb::IMessage<Unknown7> {
+ private static readonly pb::MessageParser<Unknown7> _parser = new pb::MessageParser<Unknown7>(() => new Unknown7());
+ public static pb::MessageParser<Unknown7> Parser { get { return _parser; } }
+
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Descriptor.NestedTypes[1]; }
+ }
+
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ public Unknown7() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Unknown7(Unknown7 other) : this() {
+ unknown71_ = other.unknown71_;
+ unknown72_ = other.unknown72_;
+ unknown73_ = other.unknown73_;
+ }
+
+ public Unknown7 Clone() {
+ return new Unknown7(this);
+ }
+
+ /// <summary>Field number for the "unknown71" field.</summary>
+ public const int Unknown71FieldNumber = 1;
+ private pb::ByteString unknown71_ = pb::ByteString.Empty;
+ public pb::ByteString Unknown71 {
+ get { return unknown71_; }
+ set {
+ unknown71_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "unknown72" field.</summary>
+ public const int Unknown72FieldNumber = 2;
+ private long unknown72_;
+ public long Unknown72 {
+ get { return unknown72_; }
+ set {
+ unknown72_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "unknown73" field.</summary>
+ public const int Unknown73FieldNumber = 3;
+ private pb::ByteString unknown73_ = pb::ByteString.Empty;
+ public pb::ByteString Unknown73 {
+ get { return unknown73_; }
+ set {
+ unknown73_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Unknown7);
+ }
+
+ public bool Equals(Unknown7 other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Unknown71 != other.Unknown71) return false;
+ if (Unknown72 != other.Unknown72) return false;
+ if (Unknown73 != other.Unknown73) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Unknown71.Length != 0) hash ^= Unknown71.GetHashCode();
+ if (Unknown72 != 0L) hash ^= Unknown72.GetHashCode();
+ if (Unknown73.Length != 0) hash ^= Unknown73.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Unknown71.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteBytes(Unknown71);
+ }
+ if (Unknown72 != 0L) {
+ output.WriteRawTag(16);
+ output.WriteInt64(Unknown72);
+ }
+ if (Unknown73.Length != 0) {
+ output.WriteRawTag(26);
+ output.WriteBytes(Unknown73);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Unknown71.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown71);
+ }
+ if (Unknown72 != 0L) {
+ size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown72);
+ }
+ if (Unknown73.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown73);
+ }
+ return size;
+ }
+
+ public void MergeFrom(Unknown7 other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Unknown71.Length != 0) {
+ Unknown71 = other.Unknown71;
+ }
+ if (other.Unknown72 != 0L) {
+ Unknown72 = other.Unknown72;
+ }
+ if (other.Unknown73.Length != 0) {
+ Unknown73 = other.Unknown73;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 10: {
+ Unknown71 = input.ReadBytes();
+ break;
+ }
+ case 16: {
+ Unknown72 = input.ReadInt64();
+ break;
+ }
+ case 26: {
+ Unknown73 = input.ReadBytes();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Payload : pb::IMessage<Payload> {
+ private static readonly pb::MessageParser<Payload> _parser = new pb::MessageParser<Payload>(() => new Payload());
+ public static pb::MessageParser<Payload> Parser { get { return _parser; } }
+
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::PokemonGo.RocketAPI.GeneratedCode.CatchPokemonResponse.Descriptor.NestedTypes[2]; }
+ }
+
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ public Payload() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Payload(Payload other) : this() {
+ status_ = other.status_;
+ missPercent_ = other.missPercent_;
+ capturedPokemonId_ = other.capturedPokemonId_;
+ scores_ = other.scores_;
+ }
+
+ public Payload Clone() {
+ return new Payload(this);
+ }
+
+ /// <summary>Field number for the "Status" field.</summary>
+ public const int StatusFieldNumber = 1;
+ private int status_;
+ public int Status {
+ get { return status_; }
+ set {
+ status_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "MissPercent" field.</summary>
+ public const int MissPercentFieldNumber = 2;
+ private int missPercent_;
+ public int MissPercent {
+ get { return missPercent_; }
+ set {
+ missPercent_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "CapturedPokemonId" field.</summary>
+ public const int CapturedPokemonIdFieldNumber = 3;
+ private int capturedPokemonId_;
+ public int CapturedPokemonId {
+ get { return capturedPokemonId_; }
+ set {
+ capturedPokemonId_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Scores" field.</summary>
+ public const int ScoresFieldNumber = 4;
+ private int scores_;
+ public int Scores {
+ get { return scores_; }
+ set {
+ scores_ = value;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Payload);
+ }
+
+ public bool Equals(Payload other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Status != other.Status) return false;
+ if (MissPercent != other.MissPercent) return false;
+ if (CapturedPokemonId != other.CapturedPokemonId) return false;
+ if (Scores != other.Scores) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Status != 0) hash ^= Status.GetHashCode();
+ if (MissPercent != 0) hash ^= MissPercent.GetHashCode();
+ if (CapturedPokemonId != 0) hash ^= CapturedPokemonId.GetHashCode();
+ if (Scores != 0) hash ^= Scores.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Status != 0) {
+ output.WriteRawTag(8);
+ output.WriteInt32(Status);
+ }
+ if (MissPercent != 0) {
+ output.WriteRawTag(16);
+ output.WriteInt32(MissPercent);
+ }
+ if (CapturedPokemonId != 0) {
+ output.WriteRawTag(24);
+ output.WriteInt32(CapturedPokemonId);
+ }
+ if (Scores != 0) {
+ output.WriteRawTag(32);
+ output.WriteInt32(Scores);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Status != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Status);
+ }
+ if (MissPercent != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(MissPercent);
+ }
+ if (CapturedPokemonId != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(CapturedPokemonId);
+ }
+ if (Scores != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Scores);
+ }
+ return size;
+ }
+
+ public void MergeFrom(Payload other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Status != 0) {
+ Status = other.Status;
+ }
+ if (other.MissPercent != 0) {
+ MissPercent = other.MissPercent;
+ }
+ if (other.CapturedPokemonId != 0) {
+ CapturedPokemonId = other.CapturedPokemonId;
+ }
+ if (other.Scores != 0) {
+ Scores = other.Scores;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 8: {
+ Status = input.ReadInt32();
+ break;
+ }
+ case 16: {
+ MissPercent = input.ReadInt32();
+ break;
+ }
+ case 24: {
+ CapturedPokemonId = input.ReadInt32();
+ break;
+ }
+ case 32: {
+ Scores = input.ReadInt32();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ }
+ #endregion
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/PokemonGo/RocketAPI/GeneratedCode/EncounterResponse.cs b/PokemonGo/RocketAPI/GeneratedCode/EncounterResponse.cs
new file mode 100644
index 0000000..28147d4
--- /dev/null
+++ b/PokemonGo/RocketAPI/GeneratedCode/EncounterResponse.cs
@@ -0,0 +1,924 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: EncounterResponse.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace PokemonGo.RocketAPI.GeneratedCode {
+
+ /// <summary>Holder for reflection information generated from EncounterResponse.proto</summary>
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public static partial class EncounterResponseReflection {
+
+ #region Descriptor
+ /// <summary>File descriptor for EncounterResponse.proto</summary>
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static EncounterResponseReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "ChdFbmNvdW50ZXJSZXNwb25zZS5wcm90bxIhUG9rZW1vbkdvLlJvY2tldEFQ",
+ "SS5HZW5lcmF0ZWRDb2RlIocFChFFbmNvdW50ZXJSZXNwb25zZRIQCgh1bmtu",
+ "b3duMRgBIAEoBRIQCgh1bmtub3duMhgCIAEoAxIPCgdhcGlfdXJsGAMgASgJ",
+ "Ek8KCHVua25vd242GAYgASgLMj0uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5l",
+ "cmF0ZWRDb2RlLkVuY291bnRlclJlc3BvbnNlLlVua25vd242Ek8KCHVua25v",
+ "d243GAcgASgLMj0uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2Rl",
+ "LkVuY291bnRlclJlc3BvbnNlLlVua25vd243Ek0KB3BheWxvYWQYZCADKAsy",
+ "PC5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuRW5jb3VudGVy",
+ "UmVzcG9uc2UuUGF5bG9hZBIUCgxlcnJvck1lc3NhZ2UYZSABKAkalAEKCFVu",
+ "a25vd242EhAKCHVua25vd24xGAEgASgFElgKCHVua25vd24yGAIgASgLMkYu",
+ "UG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkVuY291bnRlclJl",
+ "c3BvbnNlLlVua25vd242LlVua25vd24yGhwKCFVua25vd24yEhAKCHVua25v",
+ "d24xGAEgASgMGkMKCFVua25vd243EhEKCXVua25vd243MRgBIAEoDBIRCgl1",
+ "bmtub3duNzIYAiABKAMSEQoJdW5rbm93bjczGAMgASgMGloKB1BheWxvYWQS",
+ "DwoHUG9rZW1vbhgBIAEoBRISCgpCYWNrZ3JvdW5kGAIgASgFEg4KBlN0YXR1",
+ "cxgDIAEoBRIaChJDYXB0dXJlUHJvYmFiaWxpdHkYBCABKAViBnByb3RvMw=="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse), global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Parser, new[]{ "Unknown1", "Unknown2", "ApiUrl", "Unknown6", "Unknown7", "Payload", "ErrorMessage" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6), global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6.Parser, new[]{ "Unknown1", "Unknown2" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6.Types.Unknown2), global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6.Types.Unknown2.Parser, new[]{ "Unknown1" }, null, null, null)}),
+ new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown7), global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown7.Parser, new[]{ "Unknown71", "Unknown72", "Unknown73" }, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Payload), global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Payload.Parser, new[]{ "Pokemon", "Background", "Status", "CaptureProbability" }, null, null, null)})
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class EncounterResponse : pb::IMessage<EncounterResponse> {
+ private static readonly pb::MessageParser<EncounterResponse> _parser = new pb::MessageParser<EncounterResponse>(() => new EncounterResponse());
+ public static pb::MessageParser<EncounterResponse> Parser { get { return _parser; } }
+
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponseReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ public EncounterResponse() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public EncounterResponse(EncounterResponse other) : this() {
+ unknown1_ = other.unknown1_;
+ unknown2_ = other.unknown2_;
+ apiUrl_ = other.apiUrl_;
+ Unknown6 = other.unknown6_ != null ? other.Unknown6.Clone() : null;
+ Unknown7 = other.unknown7_ != null ? other.Unknown7.Clone() : null;
+ payload_ = other.payload_.Clone();
+ errorMessage_ = other.errorMessage_;
+ }
+
+ public EncounterResponse Clone() {
+ return new EncounterResponse(this);
+ }
+
+ /// <summary>Field number for the "unknown1" field.</summary>
+ public const int Unknown1FieldNumber = 1;
+ private int unknown1_;
+ public int Unknown1 {
+ get { return unknown1_; }
+ set {
+ unknown1_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "unknown2" field.</summary>
+ public const int Unknown2FieldNumber = 2;
+ private long unknown2_;
+ public long Unknown2 {
+ get { return unknown2_; }
+ set {
+ unknown2_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "api_url" field.</summary>
+ public const int ApiUrlFieldNumber = 3;
+ private string apiUrl_ = "";
+ public string ApiUrl {
+ get { return apiUrl_; }
+ set {
+ apiUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "unknown6" field.</summary>
+ public const int Unknown6FieldNumber = 6;
+ private global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6 unknown6_;
+ public global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6 Unknown6 {
+ get { return unknown6_; }
+ set {
+ unknown6_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "unknown7" field.</summary>
+ public const int Unknown7FieldNumber = 7;
+ private global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown7 unknown7_;
+ public global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown7 Unknown7 {
+ get { return unknown7_; }
+ set {
+ unknown7_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "payload" field.</summary>
+ public const int PayloadFieldNumber = 100;
+ private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Payload> _repeated_payload_codec
+ = pb::FieldCodec.ForMessage(802, global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Payload.Parser);
+ private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Payload> payload_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Payload>();
+ public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Payload> Payload {
+ get { return payload_; }
+ }
+
+ /// <summary>Field number for the "errorMessage" field.</summary>
+ public const int ErrorMessageFieldNumber = 101;
+ private string errorMessage_ = "";
+ /// <summary>
+ /// Should be moved to an error-proto file if error is always 101 field
+ /// </summary>
+ public string ErrorMessage {
+ get { return errorMessage_; }
+ set {
+ errorMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as EncounterResponse);
+ }
+
+ public bool Equals(EncounterResponse other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Unknown1 != other.Unknown1) return false;
+ if (Unknown2 != other.Unknown2) return false;
+ if (ApiUrl != other.ApiUrl) return false;
+ if (!object.Equals(Unknown6, other.Unknown6)) return false;
+ if (!object.Equals(Unknown7, other.Unknown7)) return false;
+ if(!payload_.Equals(other.payload_)) return false;
+ if (ErrorMessage != other.ErrorMessage) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
+ if (Unknown2 != 0L) hash ^= Unknown2.GetHashCode();
+ if (ApiUrl.Length != 0) hash ^= ApiUrl.GetHashCode();
+ if (unknown6_ != null) hash ^= Unknown6.GetHashCode();
+ if (unknown7_ != null) hash ^= Unknown7.GetHashCode();
+ hash ^= payload_.GetHashCode();
+ if (ErrorMessage.Length != 0) hash ^= ErrorMessage.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Unknown1 != 0) {
+ output.WriteRawTag(8);
+ output.WriteInt32(Unknown1);
+ }
+ if (Unknown2 != 0L) {
+ output.WriteRawTag(16);
+ output.WriteInt64(Unknown2);
+ }
+ if (ApiUrl.Length != 0) {
+ output.WriteRawTag(26);
+ output.WriteString(ApiUrl);
+ }
+ if (unknown6_ != null) {
+ output.WriteRawTag(50);
+ output.WriteMessage(Unknown6);
+ }
+ if (unknown7_ != null) {
+ output.WriteRawTag(58);
+ output.WriteMessage(Unknown7);
+ }
+ payload_.WriteTo(output, _repeated_payload_codec);
+ if (ErrorMessage.Length != 0) {
+ output.WriteRawTag(170, 6);
+ output.WriteString(ErrorMessage);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Unknown1 != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
+ }
+ if (Unknown2 != 0L) {
+ size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown2);
+ }
+ if (ApiUrl.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(ApiUrl);
+ }
+ if (unknown6_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown6);
+ }
+ if (unknown7_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown7);
+ }
+ size += payload_.CalculateSize(_repeated_payload_codec);
+ if (ErrorMessage.Length != 0) {
+ size += 2 + pb::CodedOutputStream.ComputeStringSize(ErrorMessage);
+ }
+ return size;
+ }
+
+ public void MergeFrom(EncounterResponse other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Unknown1 != 0) {
+ Unknown1 = other.Unknown1;
+ }
+ if (other.Unknown2 != 0L) {
+ Unknown2 = other.Unknown2;
+ }
+ if (other.ApiUrl.Length != 0) {
+ ApiUrl = other.ApiUrl;
+ }
+ if (other.unknown6_ != null) {
+ if (unknown6_ == null) {
+ unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6();
+ }
+ Unknown6.MergeFrom(other.Unknown6);
+ }
+ if (other.unknown7_ != null) {
+ if (unknown7_ == null) {
+ unknown7_ = new global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown7();
+ }
+ Unknown7.MergeFrom(other.Unknown7);
+ }
+ payload_.Add(other.payload_);
+ if (other.ErrorMessage.Length != 0) {
+ ErrorMessage = other.ErrorMessage;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 8: {
+ Unknown1 = input.ReadInt32();
+ break;
+ }
+ case 16: {
+ Unknown2 = input.ReadInt64();
+ break;
+ }
+ case 26: {
+ ApiUrl = input.ReadString();
+ break;
+ }
+ case 50: {
+ if (unknown6_ == null) {
+ unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6();
+ }
+ input.ReadMessage(unknown6_);
+ break;
+ }
+ case 58: {
+ if (unknown7_ == null) {
+ unknown7_ = new global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown7();
+ }
+ input.ReadMessage(unknown7_);
+ break;
+ }
+ case 802: {
+ payload_.AddEntriesFrom(input, _repeated_payload_codec);
+ break;
+ }
+ case 810: {
+ ErrorMessage = input.ReadString();
+ break;
+ }
+ }
+ }
+ }
+
+ #region Nested types
+ /// <summary>Container for nested types declared in the EncounterResponse message type.</summary>
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public static partial class Types {
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Unknown6 : pb::IMessage<Unknown6> {
+ private static readonly pb::MessageParser<Unknown6> _parser = new pb::MessageParser<Unknown6>(() => new Unknown6());
+ public static pb::MessageParser<Unknown6> Parser { get { return _parser; } }
+
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Descriptor.NestedTypes[0]; }
+ }
+
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ public Unknown6() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Unknown6(Unknown6 other) : this() {
+ unknown1_ = other.unknown1_;
+ Unknown2 = other.unknown2_ != null ? other.Unknown2.Clone() : null;
+ }
+
+ public Unknown6 Clone() {
+ return new Unknown6(this);
+ }
+
+ /// <summary>Field number for the "unknown1" field.</summary>
+ public const int Unknown1FieldNumber = 1;
+ private int unknown1_;
+ public int Unknown1 {
+ get { return unknown1_; }
+ set {
+ unknown1_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "unknown2" field.</summary>
+ public const int Unknown2FieldNumber = 2;
+ private global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6.Types.Unknown2 unknown2_;
+ public global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6.Types.Unknown2 Unknown2 {
+ get { return unknown2_; }
+ set {
+ unknown2_ = value;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Unknown6);
+ }
+
+ public bool Equals(Unknown6 other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Unknown1 != other.Unknown1) return false;
+ if (!object.Equals(Unknown2, other.Unknown2)) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
+ if (unknown2_ != null) hash ^= Unknown2.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Unknown1 != 0) {
+ output.WriteRawTag(8);
+ output.WriteInt32(Unknown1);
+ }
+ if (unknown2_ != null) {
+ output.WriteRawTag(18);
+ output.WriteMessage(Unknown2);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Unknown1 != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
+ }
+ if (unknown2_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown2);
+ }
+ return size;
+ }
+
+ public void MergeFrom(Unknown6 other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Unknown1 != 0) {
+ Unknown1 = other.Unknown1;
+ }
+ if (other.unknown2_ != null) {
+ if (unknown2_ == null) {
+ unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6.Types.Unknown2();
+ }
+ Unknown2.MergeFrom(other.Unknown2);
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 8: {
+ Unknown1 = input.ReadInt32();
+ break;
+ }
+ case 18: {
+ if (unknown2_ == null) {
+ unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6.Types.Unknown2();
+ }
+ input.ReadMessage(unknown2_);
+ break;
+ }
+ }
+ }
+ }
+
+ #region Nested types
+ /// <summary>Container for nested types declared in the Unknown6 message type.</summary>
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public static partial class Types {
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Unknown2 : pb::IMessage<Unknown2> {
+ private static readonly pb::MessageParser<Unknown2> _parser = new pb::MessageParser<Unknown2>(() => new Unknown2());
+ public static pb::MessageParser<Unknown2> Parser { get { return _parser; } }
+
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Types.Unknown6.Descriptor.NestedTypes[0]; }
+ }
+
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ public Unknown2() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Unknown2(Unknown2 other) : this() {
+ unknown1_ = other.unknown1_;
+ }
+
+ public Unknown2 Clone() {
+ return new Unknown2(this);
+ }
+
+ /// <summary>Field number for the "unknown1" field.</summary>
+ public const int Unknown1FieldNumber = 1;
+ private pb::ByteString unknown1_ = pb::ByteString.Empty;
+ public pb::ByteString Unknown1 {
+ get { return unknown1_; }
+ set {
+ unknown1_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Unknown2);
+ }
+
+ public bool Equals(Unknown2 other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Unknown1 != other.Unknown1) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Unknown1.Length != 0) hash ^= Unknown1.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Unknown1.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteBytes(Unknown1);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Unknown1.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown1);
+ }
+ return size;
+ }
+
+ public void MergeFrom(Unknown2 other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Unknown1.Length != 0) {
+ Unknown1 = other.Unknown1;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 10: {
+ Unknown1 = input.ReadBytes();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ }
+ #endregion
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Unknown7 : pb::IMessage<Unknown7> {
+ private static readonly pb::MessageParser<Unknown7> _parser = new pb::MessageParser<Unknown7>(() => new Unknown7());
+ public static pb::MessageParser<Unknown7> Parser { get { return _parser; } }
+
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Descriptor.NestedTypes[1]; }
+ }
+
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ public Unknown7() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Unknown7(Unknown7 other) : this() {
+ unknown71_ = other.unknown71_;
+ unknown72_ = other.unknown72_;
+ unknown73_ = other.unknown73_;
+ }
+
+ public Unknown7 Clone() {
+ return new Unknown7(this);
+ }
+
+ /// <summary>Field number for the "unknown71" field.</summary>
+ public const int Unknown71FieldNumber = 1;
+ private pb::ByteString unknown71_ = pb::ByteString.Empty;
+ public pb::ByteString Unknown71 {
+ get { return unknown71_; }
+ set {
+ unknown71_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "unknown72" field.</summary>
+ public const int Unknown72FieldNumber = 2;
+ private long unknown72_;
+ public long Unknown72 {
+ get { return unknown72_; }
+ set {
+ unknown72_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "unknown73" field.</summary>
+ public const int Unknown73FieldNumber = 3;
+ private pb::ByteString unknown73_ = pb::ByteString.Empty;
+ public pb::ByteString Unknown73 {
+ get { return unknown73_; }
+ set {
+ unknown73_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Unknown7);
+ }
+
+ public bool Equals(Unknown7 other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Unknown71 != other.Unknown71) return false;
+ if (Unknown72 != other.Unknown72) return false;
+ if (Unknown73 != other.Unknown73) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Unknown71.Length != 0) hash ^= Unknown71.GetHashCode();
+ if (Unknown72 != 0L) hash ^= Unknown72.GetHashCode();
+ if (Unknown73.Length != 0) hash ^= Unknown73.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Unknown71.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteBytes(Unknown71);
+ }
+ if (Unknown72 != 0L) {
+ output.WriteRawTag(16);
+ output.WriteInt64(Unknown72);
+ }
+ if (Unknown73.Length != 0) {
+ output.WriteRawTag(26);
+ output.WriteBytes(Unknown73);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Unknown71.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown71);
+ }
+ if (Unknown72 != 0L) {
+ size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown72);
+ }
+ if (Unknown73.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown73);
+ }
+ return size;
+ }
+
+ public void MergeFrom(Unknown7 other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Unknown71.Length != 0) {
+ Unknown71 = other.Unknown71;
+ }
+ if (other.Unknown72 != 0L) {
+ Unknown72 = other.Unknown72;
+ }
+ if (other.Unknown73.Length != 0) {
+ Unknown73 = other.Unknown73;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 10: {
+ Unknown71 = input.ReadBytes();
+ break;
+ }
+ case 16: {
+ Unknown72 = input.ReadInt64();
+ break;
+ }
+ case 26: {
+ Unknown73 = input.ReadBytes();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Payload : pb::IMessage<Payload> {
+ private static readonly pb::MessageParser<Payload> _parser = new pb::MessageParser<Payload>(() => new Payload());
+ public static pb::MessageParser<Payload> Parser { get { return _parser; } }
+
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::PokemonGo.RocketAPI.GeneratedCode.EncounterResponse.Descriptor.NestedTypes[2]; }
+ }
+
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ public Payload() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Payload(Payload other) : this() {
+ pokemon_ = other.pokemon_;
+ background_ = other.background_;
+ status_ = other.status_;
+ captureProbability_ = other.captureProbability_;
+ }
+
+ public Payload Clone() {
+ return new Payload(this);
+ }
+
+ /// <summary>Field number for the "Pokemon" field.</summary>
+ public const int PokemonFieldNumber = 1;
+ private int pokemon_;
+ public int Pokemon {
+ get { return pokemon_; }
+ set {
+ pokemon_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Background" field.</summary>
+ public const int BackgroundFieldNumber = 2;
+ private int background_;
+ public int Background {
+ get { return background_; }
+ set {
+ background_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Status" field.</summary>
+ public const int StatusFieldNumber = 3;
+ private int status_;
+ public int Status {
+ get { return status_; }
+ set {
+ status_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "CaptureProbability" field.</summary>
+ public const int CaptureProbabilityFieldNumber = 4;
+ private int captureProbability_;
+ public int CaptureProbability {
+ get { return captureProbability_; }
+ set {
+ captureProbability_ = value;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Payload);
+ }
+
+ public bool Equals(Payload other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Pokemon != other.Pokemon) return false;
+ if (Background != other.Background) return false;
+ if (Status != other.Status) return false;
+ if (CaptureProbability != other.CaptureProbability) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Pokemon != 0) hash ^= Pokemon.GetHashCode();
+ if (Background != 0) hash ^= Background.GetHashCode();
+ if (Status != 0) hash ^= Status.GetHashCode();
+ if (CaptureProbability != 0) hash ^= CaptureProbability.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Pokemon != 0) {
+ output.WriteRawTag(8);
+ output.WriteInt32(Pokemon);
+ }
+ if (Background != 0) {
+ output.WriteRawTag(16);
+ output.WriteInt32(Background);
+ }
+ if (Status != 0) {
+ output.WriteRawTag(24);
+ output.WriteInt32(Status);
+ }
+ if (CaptureProbability != 0) {
+ output.WriteRawTag(32);
+ output.WriteInt32(CaptureProbability);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Pokemon != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Pokemon);
+ }
+ if (Background != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Background);
+ }
+ if (Status != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Status);
+ }
+ if (CaptureProbability != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(CaptureProbability);
+ }
+ return size;
+ }
+
+ public void MergeFrom(Payload other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Pokemon != 0) {
+ Pokemon = other.Pokemon;
+ }
+ if (other.Background != 0) {
+ Background = other.Background;
+ }
+ if (other.Status != 0) {
+ Status = other.Status;
+ }
+ if (other.CaptureProbability != 0) {
+ CaptureProbability = other.CaptureProbability;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 8: {
+ Pokemon = input.ReadInt32();
+ break;
+ }
+ case 16: {
+ Background = input.ReadInt32();
+ break;
+ }
+ case 24: {
+ Status = input.ReadInt32();
+ break;
+ }
+ case 32: {
+ CaptureProbability = input.ReadInt32();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ }
+ #endregion
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/PokemonGo/RocketAPI/GeneratedCode/MapObjectsResponse.cs b/PokemonGo/RocketAPI/GeneratedCode/MapObjectsResponse.cs
index bfbfd10..59ab48f 100644
--- a/PokemonGo/RocketAPI/GeneratedCode/MapObjectsResponse.cs
+++ b/PokemonGo/RocketAPI/GeneratedCode/MapObjectsResponse.cs
@@ -62,7 +62,7 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
"ZW1vbhgLIAMoCzJQLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29k",
"ZS5NYXBPYmplY3RzUmVzcG9uc2UuUGF5bG9hZC5OZWFyYnlQb2tlbW9uUHJv",
"dG8akgEKD01hcFBva2Vtb25Qcm90bxIUCgxTcGF3bnBvaW50SWQYASABKAkS",
- "EwoLRW5jb3VudGVySWQYAiABKAQSFQoNUG9rZWRleFR5cGVJZBgDIAEoBRIY",
+ "EwoLRW5jb3VudGVySWQYAiABKAYSFQoNUG9rZWRleFR5cGVJZBgDIAEoBRIY",
"ChBFeHBpcmF0aW9uVGltZU1zGAQgASgDEhAKCExhdGl0dWRlGAUgASgBEhEK",
"CUxvbmdpdHVkZRgGIAEoARqUAwoQUG9rZW1vbkZvcnRQcm90bxIOCgZGb3J0",
"SWQYASABKAkSFgoOTGFzdE1vZGlmaWVkTXMYAiABKAMSEAoITGF0aXR1ZGUY",
@@ -1488,8 +1488,8 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
output.WriteString(SpawnpointId);
}
if (EncounterId != 0UL) {
- output.WriteRawTag(16);
- output.WriteUInt64(EncounterId);
+ output.WriteRawTag(17);
+ output.WriteFixed64(EncounterId);
}
if (PokedexTypeId != 0) {
output.WriteRawTag(24);
@@ -1515,7 +1515,7 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
size += 1 + pb::CodedOutputStream.ComputeStringSize(SpawnpointId);
}
if (EncounterId != 0UL) {
- size += 1 + pb::CodedOutputStream.ComputeUInt64Size(EncounterId);
+ size += 1 + 8;
}
if (PokedexTypeId != 0) {
size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokedexTypeId);
@@ -1567,8 +1567,8 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
SpawnpointId = input.ReadString();
break;
}
- case 16: {
- EncounterId = input.ReadUInt64();
+ case 17: {
+ EncounterId = input.ReadFixed64();
break;
}
case 24: {
diff --git a/PokemonGo/RocketAPI/GeneratedCode/Request.cs b/PokemonGo/RocketAPI/GeneratedCode/Request.cs
index fc703b9..4cda532 100644
--- a/PokemonGo/RocketAPI/GeneratedCode/Request.cs
+++ b/PokemonGo/RocketAPI/GeneratedCode/Request.cs
@@ -24,7 +24,7 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
"Cg1SZXF1ZXN0LnByb3RvEiFQb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRl",
- "ZENvZGUi0gkKB1JlcXVlc3QSEAoIdW5rbm93bjEYASABKAUSDgoGcnBjX2lk",
+ "ZENvZGUihAwKB1JlcXVlc3QSEAoIdW5rbm93bjEYASABKAUSDgoGcnBjX2lk",
"GAMgASgDEkUKCHJlcXVlc3RzGAQgAygLMjMuUG9rZW1vbkdvLlJvY2tldEFQ",
"SS5HZW5lcmF0ZWRDb2RlLlJlcXVlc3QuUmVxdWVzdHMSRQoIdW5rbm93bjYY",
"BiABKAsyMy5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuUmVx",
@@ -50,8 +50,15 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
"cmVlcxgCIAEoBhIYChBQbGF5ZXJMbmdEZWdyZWVzGAMgASgGEhYKDkZvcnRM",
"YXREZWdyZWVzGAQgASgGEhYKDkZvcnRMbmdEZWdyZWVzGAUgASgGGkUKEkZv",
"cnREZXRhaWxzUmVxdWVzdBIKCgJJZBgBIAEoDBIQCghMYXRpdHVkZRgCIAEo",
- "BhIRCglMb25naXR1ZGUYAyABKAYaHAoMU2V0dGluZ3NHdWlkEgwKBGd1aWQY",
- "ASABKAwaFAoEVGltZRIMCgR0aW1lGAEgASgDYgZwcm90bzM="));
+ "BhIRCglMb25naXR1ZGUYAyABKAYacQoQRW5jb3VudGVyUmVxdWVzdBITCgtF",
+ "bmNvdW50ZXJJZBgBIAEoBhIUCgxTcGF3bnBvaW50SWQYAiABKAkSGAoQUGxh",
+ "eWVyTGF0RGVncmVlcxgDIAEoBhIYChBQbGF5ZXJMbmdEZWdyZWVzGAQgASgG",
+ "GrwBChNDYXRjaFBva2Vtb25SZXF1ZXN0EhMKC0VuY291bnRlcklkGAEgASgG",
+ "EhAKCFBva2ViYWxsGAIgASgFEh0KFU5vcm1hbGl6ZWRSZXRpY2xlU2l6ZRgD",
+ "IAEoBhIWCg5TcGF3blBvaW50R3VpZBgEIAEoCRISCgpIaXRQb2tlbW9uGAUg",
+ "ASgFEhQKDFNwaW5Nb2RpZmllchgGIAEoBhIdChVOb3JtYWxpemVkSGl0UG9z",
+ "aXRpb24YByABKAYaHAoMU2V0dGluZ3NHdWlkEgwKBGd1aWQYASABKAwaFAoE",
+ "VGltZRIMCgR0aW1lGAEgASgDYgZwcm90bzM="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
@@ -64,6 +71,8 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.MapObjectsRequest), global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.MapObjectsRequest.Parser, new[]{ "CellIds", "Unknown14", "Latitude", "Longitude" }, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.FortSearchRequest), global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.FortSearchRequest.Parser, new[]{ "Id", "PlayerLatDegrees", "PlayerLngDegrees", "FortLatDegrees", "FortLngDegrees" }, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.FortDetailsRequest), global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.FortDetailsRequest.Parser, new[]{ "Id", "Latitude", "Longitude" }, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.EncounterRequest), global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.EncounterRequest.Parser, new[]{ "EncounterId", "SpawnpointId", "PlayerLatDegrees", "PlayerLngDegrees" }, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.CatchPokemonRequest), global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.CatchPokemonRequest.Parser, new[]{ "EncounterId", "Pokeball", "NormalizedReticleSize", "SpawnPointGuid", "HitPokemon", "SpinModifier", "NormalizedHitPosition" }, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.SettingsGuid), global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.SettingsGuid.Parser, new[]{ "Guid" }, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Time), global::PokemonGo.RocketAPI.GeneratedCode.Request.Types.Time.Parser, new[]{ "Time_" }, null, null, null)})
}));
@@ -2021,13 +2030,462 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
}
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class EncounterRequest : pb::IMessage<EncounterRequest> {
+ private static readonly pb::MessageParser<EncounterRequest> _parser = new pb::MessageParser<EncounterRequest>(() => new EncounterRequest());
+ public static pb::MessageParser<EncounterRequest> Parser { get { return _parser; } }
+
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::PokemonGo.RocketAPI.GeneratedCode.Request.Descriptor.NestedTypes[9]; }
+ }
+
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ public EncounterRequest() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public EncounterRequest(EncounterRequest other) : this() {
+ encounterId_ = other.encounterId_;
+ spawnpointId_ = other.spawnpointId_;
+ playerLatDegrees_ = other.playerLatDegrees_;
+ playerLngDegrees_ = other.playerLngDegrees_;
+ }
+
+ public EncounterRequest Clone() {
+ return new EncounterRequest(this);
+ }
+
+ /// <summary>Field number for the "EncounterId" field.</summary>
+ public const int EncounterIdFieldNumber = 1;
+ private ulong encounterId_;
+ public ulong EncounterId {
+ get { return encounterId_; }
+ set {
+ encounterId_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "SpawnpointId" field.</summary>
+ public const int SpawnpointIdFieldNumber = 2;
+ private string spawnpointId_ = "";
+ public string SpawnpointId {
+ get { return spawnpointId_; }
+ set {
+ spawnpointId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "PlayerLatDegrees" field.</summary>
+ public const int PlayerLatDegreesFieldNumber = 3;
+ private ulong playerLatDegrees_;
+ public ulong PlayerLatDegrees {
+ get { return playerLatDegrees_; }
+ set {
+ playerLatDegrees_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "PlayerLngDegrees" field.</summary>
+ public const int PlayerLngDegreesFieldNumber = 4;
+ private ulong playerLngDegrees_;
+ public ulong PlayerLngDegrees {
+ get { return playerLngDegrees_; }
+ set {
+ playerLngDegrees_ = value;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as EncounterRequest);
+ }
+
+ public bool Equals(EncounterRequest other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (EncounterId != other.EncounterId) return false;
+ if (SpawnpointId != other.SpawnpointId) return false;
+ if (PlayerLatDegrees != other.PlayerLatDegrees) return false;
+ if (PlayerLngDegrees != other.PlayerLngDegrees) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
+ if (SpawnpointId.Length != 0) hash ^= SpawnpointId.GetHashCode();
+ if (PlayerLatDegrees != 0UL) hash ^= PlayerLatDegrees.GetHashCode();
+ if (PlayerLngDegrees != 0UL) hash ^= PlayerLngDegrees.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (EncounterId != 0UL) {
+ output.WriteRawTag(9);
+ output.WriteFixed64(EncounterId);
+ }
+ if (SpawnpointId.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(SpawnpointId);
+ }
+ if (PlayerLatDegrees != 0UL) {
+ output.WriteRawTag(25);
+ output.WriteFixed64(PlayerLatDegrees);
+ }
+ if (PlayerLngDegrees != 0UL) {
+ output.WriteRawTag(33);
+ output.WriteFixed64(PlayerLngDegrees);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (EncounterId != 0UL) {
+ size += 1 + 8;
+ }
+ if (SpawnpointId.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(SpawnpointId);
+ }
+ if (PlayerLatDegrees != 0UL) {
+ size += 1 + 8;
+ }
+ if (PlayerLngDegrees != 0UL) {
+ size += 1 + 8;
+ }
+ return size;
+ }
+
+ public void MergeFrom(EncounterRequest other) {
+ if (other == null) {
+ return;
+ }
+ if (other.EncounterId != 0UL) {
+ EncounterId = other.EncounterId;
+ }
+ if (other.SpawnpointId.Length != 0) {
+ SpawnpointId = other.SpawnpointId;
+ }
+ if (other.PlayerLatDegrees != 0UL) {
+ PlayerLatDegrees = other.PlayerLatDegrees;
+ }
+ if (other.PlayerLngDegrees != 0UL) {
+ PlayerLngDegrees = other.PlayerLngDegrees;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 9: {
+ EncounterId = input.ReadFixed64();
+ break;
+ }
+ case 18: {
+ SpawnpointId = input.ReadString();
+ break;
+ }
+ case 25: {
+ PlayerLatDegrees = input.ReadFixed64();
+ break;
+ }
+ case 33: {
+ PlayerLngDegrees = input.ReadFixed64();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class CatchPokemonRequest : pb::IMessage<CatchPokemonRequest> {
+ private static readonly pb::MessageParser<CatchPokemonRequest> _parser = new pb::MessageParser<CatchPokemonRequest>(() => new CatchPokemonRequest());
+ public static pb::MessageParser<CatchPokemonRequest> Parser { get { return _parser; } }
+
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::PokemonGo.RocketAPI.GeneratedCode.Request.Descriptor.NestedTypes[10]; }
+ }
+
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ public CatchPokemonRequest() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public CatchPokemonRequest(CatchPokemonRequest other) : this() {
+ encounterId_ = other.encounterId_;
+ pokeball_ = other.pokeball_;
+ normalizedReticleSize_ = other.normalizedReticleSize_;
+ spawnPointGuid_ = other.spawnPointGuid_;
+ hitPokemon_ = other.hitPokemon_;
+ spinModifier_ = other.spinModifier_;
+ normalizedHitPosition_ = other.normalizedHitPosition_;
+ }
+
+ public CatchPokemonRequest Clone() {
+ return new CatchPokemonRequest(this);
+ }
+
+ /// <summary>Field number for the "EncounterId" field.</summary>
+ public const int EncounterIdFieldNumber = 1;
+ private ulong encounterId_;
+ public ulong EncounterId {
+ get { return encounterId_; }
+ set {
+ encounterId_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "Pokeball" field.</summary>
+ public const int PokeballFieldNumber = 2;
+ private int pokeball_;
+ public int Pokeball {
+ get { return pokeball_; }
+ set {
+ pokeball_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "NormalizedReticleSize" field.</summary>
+ public const int NormalizedReticleSizeFieldNumber = 3;
+ private ulong normalizedReticleSize_;
+ public ulong NormalizedReticleSize {
+ get { return normalizedReticleSize_; }
+ set {
+ normalizedReticleSize_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "SpawnPointGuid" field.</summary>
+ public const int SpawnPointGuidFieldNumber = 4;
+ private string spawnPointGuid_ = "";
+ public string SpawnPointGuid {
+ get { return spawnPointGuid_; }
+ set {
+ spawnPointGuid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// <summary>Field number for the "HitPokemon" field.</summary>
+ public const int HitPokemonFieldNumber = 5;
+ private int hitPokemon_;
+ public int HitPokemon {
+ get { return hitPokemon_; }
+ set {
+ hitPokemon_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "SpinModifier" field.</summary>
+ public const int SpinModifierFieldNumber = 6;
+ private ulong spinModifier_;
+ public ulong SpinModifier {
+ get { return spinModifier_; }
+ set {
+ spinModifier_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "NormalizedHitPosition" field.</summary>
+ public const int NormalizedHitPositionFieldNumber = 7;
+ private ulong normalizedHitPosition_;
+ public ulong NormalizedHitPosition {
+ get { return normalizedHitPosition_; }
+ set {
+ normalizedHitPosition_ = value;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as CatchPokemonRequest);
+ }
+
+ public bool Equals(CatchPokemonRequest other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (EncounterId != other.EncounterId) return false;
+ if (Pokeball != other.Pokeball) return false;
+ if (NormalizedReticleSize != other.NormalizedReticleSize) return false;
+ if (SpawnPointGuid != other.SpawnPointGuid) return false;
+ if (HitPokemon != other.HitPokemon) return false;
+ if (SpinModifier != other.SpinModifier) return false;
+ if (NormalizedHitPosition != other.NormalizedHitPosition) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (EncounterId != 0UL) hash ^= EncounterId.GetHashCode();
+ if (Pokeball != 0) hash ^= Pokeball.GetHashCode();
+ if (NormalizedReticleSize != 0UL) hash ^= NormalizedReticleSize.GetHashCode();
+ if (SpawnPointGuid.Length != 0) hash ^= SpawnPointGuid.GetHashCode();
+ if (HitPokemon != 0) hash ^= HitPokemon.GetHashCode();
+ if (SpinModifier != 0UL) hash ^= SpinModifier.GetHashCode();
+ if (NormalizedHitPosition != 0UL) hash ^= NormalizedHitPosition.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (EncounterId != 0UL) {
+ output.WriteRawTag(9);
+ output.WriteFixed64(EncounterId);
+ }
+ if (Pokeball != 0) {
+ output.WriteRawTag(16);
+ output.WriteInt32(Pokeball);
+ }
+ if (NormalizedReticleSize != 0UL) {
+ output.WriteRawTag(25);
+ output.WriteFixed64(NormalizedReticleSize);
+ }
+ if (SpawnPointGuid.Length != 0) {
+ output.WriteRawTag(34);
+ output.WriteString(SpawnPointGuid);
+ }
+ if (HitPokemon != 0) {
+ output.WriteRawTag(40);
+ output.WriteInt32(HitPokemon);
+ }
+ if (SpinModifier != 0UL) {
+ output.WriteRawTag(49);
+ output.WriteFixed64(SpinModifier);
+ }
+ if (NormalizedHitPosition != 0UL) {
+ output.WriteRawTag(57);
+ output.WriteFixed64(NormalizedHitPosition);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (EncounterId != 0UL) {
+ size += 1 + 8;
+ }
+ if (Pokeball != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Pokeball);
+ }
+ if (NormalizedReticleSize != 0UL) {
+ size += 1 + 8;
+ }
+ if (SpawnPointGuid.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(SpawnPointGuid);
+ }
+ if (HitPokemon != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(HitPokemon);
+ }
+ if (SpinModifier != 0UL) {
+ size += 1 + 8;
+ }
+ if (NormalizedHitPosition != 0UL) {
+ size += 1 + 8;
+ }
+ return size;
+ }
+
+ public void MergeFrom(CatchPokemonRequest other) {
+ if (other == null) {
+ return;
+ }
+ if (other.EncounterId != 0UL) {
+ EncounterId = other.EncounterId;
+ }
+ if (other.Pokeball != 0) {
+ Pokeball = other.Pokeball;
+ }
+ if (other.NormalizedReticleSize != 0UL) {
+ NormalizedReticleSize = other.NormalizedReticleSize;
+ }
+ if (other.SpawnPointGuid.Length != 0) {
+ SpawnPointGuid = other.SpawnPointGuid;
+ }
+ if (other.HitPokemon != 0) {
+ HitPokemon = other.HitPokemon;
+ }
+ if (other.SpinModifier != 0UL) {
+ SpinModifier = other.SpinModifier;
+ }
+ if (other.NormalizedHitPosition != 0UL) {
+ NormalizedHitPosition = other.NormalizedHitPosition;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ switch(tag) {
+ default:
+ input.SkipLastField();
+ break;
+ case 9: {
+ EncounterId = input.ReadFixed64();
+ break;
+ }
+ case 16: {
+ Pokeball = input.ReadInt32();
+ break;
+ }
+ case 25: {
+ NormalizedReticleSize = input.ReadFixed64();
+ break;
+ }
+ case 34: {
+ SpawnPointGuid = input.ReadString();
+ break;
+ }
+ case 40: {
+ HitPokemon = input.ReadInt32();
+ break;
+ }
+ case 49: {
+ SpinModifier = input.ReadFixed64();
+ break;
+ }
+ case 57: {
+ NormalizedHitPosition = input.ReadFixed64();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public sealed partial class SettingsGuid : pb::IMessage<SettingsGuid> {
private static readonly pb::MessageParser<SettingsGuid> _parser = new pb::MessageParser<SettingsGuid>(() => new SettingsGuid());
public static pb::MessageParser<SettingsGuid> Parser { get { return _parser; } }
public static pbr::MessageDescriptor Descriptor {
- get { return global::PokemonGo.RocketAPI.GeneratedCode.Request.Descriptor.NestedTypes[9]; }
+ get { return global::PokemonGo.RocketAPI.GeneratedCode.Request.Descriptor.NestedTypes[11]; }
}
pbr::MessageDescriptor pb::IMessage.Descriptor {
@@ -2130,7 +2588,7 @@ namespace PokemonGo.RocketAPI.GeneratedCode {
public static pb::MessageParser<Time> Parser { get { return _parser; } }
public static pbr::MessageDescriptor Descriptor {
- get { return global::PokemonGo.RocketAPI.GeneratedCode.Request.Descriptor.NestedTypes[10]; }
+ get { return global::PokemonGo.RocketAPI.GeneratedCode.Request.Descriptor.NestedTypes[12]; }
}
pbr::MessageDescriptor pb::IMessage.Descriptor {
diff --git a/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj b/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
index ac38e10..d11cd45 100644
--- a/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
+++ b/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
@@ -79,6 +79,8 @@
<Compile Include="Enums\MiscEnums.cs" />
<Compile Include="Enums\RequestType.cs" />
<Compile Include="Extensions\DateTimeExtensions.cs" />
+ <Compile Include="GeneratedCode\CatchPokemonResponse.cs" />
+ <Compile Include="GeneratedCode\EncounterResponse.cs" />
<Compile Include="GeneratedCode\FortDetailResponse.cs" />
<Compile Include="GeneratedCode\FortSearchResponse.cs" />
<Compile Include="GeneratedCode\MapObjectsResponse.cs" />
@@ -102,6 +104,8 @@
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
+ <None Include="Proto\EncounterResponse.proto" />
+ <None Include="Proto\CatchPokemonResponse.proto" />
<None Include="Proto\FortDetailResponse.proto" />
<None Include="Proto\FortSearchResponse.proto" />
<None Include="Proto\PlayerUpdateResponse.proto" />
diff --git a/PokemonGo/RocketAPI/Proto/CatchPokemonResponse.proto b/PokemonGo/RocketAPI/Proto/CatchPokemonResponse.proto
new file mode 100644
index 0000000..9b6021f
--- /dev/null
+++ b/PokemonGo/RocketAPI/Proto/CatchPokemonResponse.proto
@@ -0,0 +1,37 @@
+syntax = "proto3";
+
+package PokemonGo.RocketAPI.GeneratedCode;
+
+message CatchPokemonResponse {
+ int32 unknown1 = 1;
+ int64 unknown2 = 2;
+ string api_url = 3;
+ Unknown6 unknown6 = 6;
+ Unknown7 unknown7 = 7;
+ repeated Payload payload = 100;
+ string errorMessage = 101; //Should be moved to an error-proto file if error is always 101 field
+
+ message Unknown6 {
+ int32 unknown1 = 1;
+ Unknown2 unknown2 = 2;
+
+ message Unknown2 {
+ bytes unknown1 = 1;
+ }
+
+ }
+
+ message Unknown7 {
+ bytes unknown71 = 1;
+ int64 unknown72 = 2;
+ bytes unknown73 = 3;
+ }
+
+ message Payload {
+ int32 Status = 1;
+ int32 MissPercent = 2;
+ int32 CapturedPokemonId = 3;
+ int32 Scores = 4;
+}
+
+ }
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Proto/EncounterResponse.proto b/PokemonGo/RocketAPI/Proto/EncounterResponse.proto
new file mode 100644
index 0000000..91485e4
--- /dev/null
+++ b/PokemonGo/RocketAPI/Proto/EncounterResponse.proto
@@ -0,0 +1,37 @@
+syntax = "proto3";
+
+package PokemonGo.RocketAPI.GeneratedCode;
+
+message EncounterResponse {
+ int32 unknown1 = 1;
+ int64 unknown2 = 2;
+ string api_url = 3;
+ Unknown6 unknown6 = 6;
+ Unknown7 unknown7 = 7;
+ repeated Payload payload = 100;
+ string errorMessage = 101; //Should be moved to an error-proto file if error is always 101 field
+
+ message Unknown6 {
+ int32 unknown1 = 1;
+ Unknown2 unknown2 = 2;
+
+ message Unknown2 {
+ bytes unknown1 = 1;
+ }
+
+ }
+
+ message Unknown7 {
+ bytes unknown71 = 1;
+ int64 unknown72 = 2;
+ bytes unknown73 = 3;
+ }
+
+ message Payload {
+ int32 Pokemon = 1;
+ int32 Background = 2;
+ int32 Status = 3;
+ int32 CaptureProbability = 4;
+}
+
+ }
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Proto/MapObjectsResponse.proto b/PokemonGo/RocketAPI/Proto/MapObjectsResponse.proto
index 735efab..1e54a1e 100644
--- a/PokemonGo/RocketAPI/Proto/MapObjectsResponse.proto
+++ b/PokemonGo/RocketAPI/Proto/MapObjectsResponse.proto
@@ -59,7 +59,7 @@ message MapObjectsResponse {
message MapPokemonProto {
string SpawnpointId = 1;
- uint64 EncounterId = 2;
+ fixed64 EncounterId = 2;
int32 PokedexTypeId = 3;
int64 ExpirationTimeMs = 4;
double Latitude = 5;
diff --git a/PokemonGo/RocketAPI/Proto/Request.proto b/PokemonGo/RocketAPI/Proto/Request.proto
index bc0b8a6..1f937bf 100644
--- a/PokemonGo/RocketAPI/Proto/Request.proto
+++ b/PokemonGo/RocketAPI/Proto/Request.proto
@@ -77,6 +77,23 @@ message Request {
fixed64 Latitude = 2;
fixed64 Longitude = 3;
}
+
+ message EncounterRequest {
+ fixed64 EncounterId = 1;
+ string SpawnpointId = 2;
+ fixed64 PlayerLatDegrees = 3;
+ fixed64 PlayerLngDegrees = 4;
+ }
+
+ message CatchPokemonRequest {
+ fixed64 EncounterId = 1;
+ int32 Pokeball = 2;
+ fixed64 NormalizedReticleSize = 3;
+ string SpawnPointGuid = 4;
+ int32 HitPokemon = 5;
+ fixed64 SpinModifier = 6;
+ fixed64 NormalizedHitPosition = 7;
+ }
message SettingsGuid
{
diff --git a/README.md b/README.md
index 369d102..9af5e31 100644
--- a/README.md
+++ b/README.md
@@ -15,6 +15,7 @@ var settings = await client.GetSettings();
var mapObjects = await client.GetMapObjects();
await ExecuteFarmingPokestops(client);
+await ExecuteCatchAllNearbyPokemons(client);
```
Features
@@ -23,11 +24,11 @@ Features
#Get Map Objects
#Search for gyms/pokestops/spawns
#Farm pokestops
+#Farm all pokemons in neighbourhood
```
Todo
```
-#catch the pokemon!
#Gotta catch them all
```
You may download the files in Public Git.