├── proto ├── __init__.py └── rpc_pb2.py ├── .gitignore ├── requirements.txt ├── Dockerfile ├── README.md ├── rpc.proto ├── tunnel.py ├── holoholo_shared.proto └── remaining.proto /proto/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | .DS_Store 3 | *.log 4 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | s2sphere 2 | protobuf>=3.0.0b3 3 | expiringdict 4 | 5 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mitmproxy/mitmproxy 2 | 3 | COPY ./ /code 4 | WORKDIR /code 5 | USER root 6 | 7 | RUN pip install --disable-pip-version-check -r requirements.txt 8 | 9 | USER mitmproxy 10 | CMD mitmdump -s tunnel.py --ignore '^(?!pgorelease\.nianticlabs\.com)' 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Pokemon Go Teleport 2 | 3 | This is a [mitmproxy](https://mitmproxy.org) script that teleports you around the globe. 4 | 5 | It's useful for playing Pokemon Go before it is released in your country. 6 | 7 | ## How It Works 8 | 9 | This scripts intercepts all messages between the client and the server and translates all used coordinates. 10 | 11 | The server thinks that you're in the target location. The client still behaves like it's in your current location as if the pokemons were really spawned in your local area. 12 | 13 | ## Usage 14 | 15 | First, you need to install [mitmproxy](https://mitmproxy.org). 16 | 17 | Then do the following: 18 | 19 | 1. Edit `local_lat`, `local_lng`, `target_lat` and `target_lng` variables 20 | 2. Run `mitmdump -s tunnel.py --ignore '^(?!pgorelease\.nianticlabs\.com)' -q` 21 | 3. Change your cellphone proxy settings and install mitmproxy CA 22 | 4. Profit 23 | 24 | ## Dependencies 25 | 26 | * s2sphere 27 | * protobuf >= 3 28 | 29 | -------------------------------------------------------------------------------- /rpc.proto: -------------------------------------------------------------------------------- 1 | 2 | syntax = "proto3"; 3 | 4 | package Holoholo.Rpc; 5 | 6 | import public "holoholo_shared.proto"; 7 | import public "remaining.proto"; 8 | 9 | message MapFieldEntry { 10 | Holoholo.Rpc.Method key = 1; 11 | bytes value = 2; 12 | } 13 | 14 | enum Direction { 15 | UNKNOWN = 0; 16 | RESPONSE = 1; 17 | REQUEST = 2; 18 | } 19 | 20 | message Thing { 21 | bytes start = 1; 22 | uint64 timestamp = 2; 23 | bytes end = 3; 24 | } 25 | 26 | message RpcRequestEnvelopeProto { 27 | message AuthInfo { 28 | string provider = 1; 29 | JWT token = 2; 30 | 31 | message JWT { 32 | string contents = 1; 33 | } 34 | } 35 | 36 | Direction direction = 1; 37 | uint64 request_id = 3; 38 | 39 | repeated MapFieldEntry parameter = 4; 40 | 41 | bytes footer = 6; 42 | double lat = 7; 43 | double long = 8; 44 | double altitude = 9; 45 | AuthInfo auth = 10; 46 | 47 | Thing thing = 11; 48 | 49 | int32 unknown12 = 12; 50 | } 51 | 52 | message RpcResponseEnvelopeProto { 53 | Direction direction = 1; 54 | uint64 response_id = 2; 55 | string api_url = 3; 56 | 57 | bytes footer = 6; 58 | Unknown7 unknown7 = 7; 59 | double lat = 8; 60 | double long = 9; 61 | double altitude = 10; 62 | 63 | Thing thing = 11; 64 | 65 | int32 unknown12 = 12; 66 | repeated bytes returns = 100; 67 | 68 | message Unknown7 { 69 | bytes unknown71 = 1; 70 | int64 unknown72 = 2; 71 | bytes unknown73 = 3; 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /tunnel.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | from s2sphere import * 4 | from proto.rpc_pb2 import * 5 | 6 | from expiringdict import ExpiringDict 7 | from mitmproxy.models import decoded 8 | from mitmproxy.script import concurrent 9 | 10 | print "Pokemon Go" 11 | 12 | locations = [ 13 | (40.7829, -73.9654), # Central Park 14 | (-33.8688, 151.2093), # Sydney 15 | (37.4241, -122.1661), # Stanford 16 | (38.9072, -77.0369), # Washington DC 17 | (51.5074, -0.1278), # London 18 | (38.7223, -9.1393), # Lisbon 19 | ] 20 | 21 | request_map = ExpiringDict(max_len=999999999,max_age_seconds=20) 22 | cell_translation = ExpiringDict(max_len=999999999,max_age_seconds=20) 23 | 24 | def get_delta_for_request(lat, lng): 25 | pos = LatLng.from_degrees(lat, lng) 26 | cell = CellId.from_lat_lng(pos).parent(10) 27 | id = cell.pos() >> 1 28 | index = id % len(locations) 29 | 30 | local = cell.to_lat_lng() 31 | local_lat = local.lat().degrees 32 | local_lng = local.lng().degrees 33 | 34 | target_lat, target_lng = locations[index] 35 | 36 | delta_lat = target_lat - local_lat 37 | delta_lng = target_lng - local_lng 38 | 39 | return (delta_lat, delta_lng) 40 | 41 | def patch_coordinates(req, obj, lat_key, lng_key, direction): 42 | setattr(obj, lat_key, getattr(obj, lat_key) + req['delta_lat'] * direction) 43 | setattr(obj, lng_key, getattr(obj, lng_key) + req['delta_lng'] * direction) 44 | 45 | def patch_object(req, raw, typ, fn): 46 | obj = typ() 47 | obj.ParseFromString(raw) 48 | 49 | fn(req, obj) 50 | 51 | return obj.SerializeToString() 52 | 53 | def translate_cell_id(req, id, direction): 54 | delta_lat = req['delta_lat'] 55 | delta_lng = req['delta_lng'] 56 | 57 | delta = LatLng.from_degrees(delta_lat * direction, delta_lng * direction) 58 | 59 | old_cell = CellId(id) 60 | old_pos = old_cell.to_lat_lng() 61 | 62 | new_pos = old_pos + delta 63 | new_cell = CellId.from_lat_lng(new_pos) 64 | 65 | return new_cell 66 | 67 | def translate_outgoing_cell_id(req, id): 68 | cell = translate_cell_id(req, id, 1) 69 | 70 | cell_translation[cell.parent(15).id()] = id 71 | 72 | return cell.id() 73 | 74 | def translate_incoming_cell_id(req, id): 75 | return cell_translation.get(id, translate_cell_id(req, id, -1).id()) 76 | 77 | def patchWildPokemon(req, p, direction): 78 | patch_coordinates(req, p, 'Latitude', 'Longitude', direction) 79 | 80 | def patchFort(req, p, direction): 81 | patch_coordinates(req, p, 'Latitude', 'Longitude', direction) 82 | 83 | def patchPlayerUpdateRequest(req, r): 84 | patch_coordinates(req, r, 'Lat', 'Lng', 1) 85 | 86 | def patchPlayerUpdateResponse(req, r): 87 | for p in r.WildPokemon: 88 | patchWildPokemon(req, p, -1) 89 | 90 | for p in r.Fort: 91 | patchFort(req, p, -1) 92 | 93 | def patchGetMapObjectsRequest(req, r): 94 | for i, id in enumerate(r.CellId): 95 | r.CellId[i] = translate_outgoing_cell_id(req, id) 96 | 97 | patch_coordinates(req, r, 'PlayerLat', 'PlayerLng', 1) 98 | 99 | def patchGetMapObjectsResponse(req, r): 100 | for i, c in enumerate(r.MapCell): 101 | c.S2CellId = translate_incoming_cell_id(req, c.S2CellId) 102 | 103 | for x in c.Fort: 104 | patchFort(req, x, -1) 105 | 106 | for x in c.FortSummary: 107 | patch_coordinates(req, x, 'Latitude', 'Longitude', -1) 108 | 109 | for x in c.WildPokemon: 110 | patchWildPokemon(req, x, -1) 111 | 112 | for x in c.CatchablePokemon: 113 | patch_coordinates(req, x, 'Latitude', 'Longitude', -1) 114 | 115 | for x in c.SpawnPoint: 116 | patch_coordinates(req, x, 'Latitude', 'Longitude', -1) 117 | 118 | for x in c.DecimatedSpawnPoint: 119 | patch_coordinates(req, x, 'Latitude', 'Longitude', -1) 120 | 121 | def patchFortSearchRequest(req, r): 122 | patch_coordinates(req, r, 'PlayerLatDegrees', 'PlayerLngDegrees', 1) 123 | patch_coordinates(req, r, 'FortLatDegrees', 'FortLngDegrees', 1) 124 | 125 | def patchGetGymDetailsRequest(req, r): 126 | patch_coordinates(req, r, 'PlayerLatDegrees', 'PlayerLngDegrees', 1) 127 | patch_coordinates(req, r, 'GymLatDegrees', 'GymLngDegrees', 1) 128 | 129 | def patchEncounterRequest(req, r): 130 | patch_coordinates(req, r, 'PlayerLatDegrees', 'PlayerLngDegrees', 1) 131 | 132 | def patchEncounterResponse(req, r): 133 | if r.HasField('Pokemon'): 134 | patchWildPokemon(req, r.Pokemon, -1) 135 | 136 | def patchIncenseEncounterResponse(req, r): 137 | if r.HasField('Pokemon'): 138 | patchWildPokemon(req, r.Pokemon, -1) 139 | 140 | def patchGetIncensePokemonRequest(req, r): 141 | patch_coordinates(req, r, 'PlayerLatDegrees', 'PlayerLngDegrees', 1) 142 | 143 | def patchGetIncensePokemonResponse(req, r): 144 | patch_coordinates(req, r, 'Lat', 'Lng', -1) 145 | 146 | def patchFortDetailsRequest(req, r): 147 | patch_coordinates(req, r, 'Latitude', 'Longitude', 1) 148 | 149 | def patchFortDetailsResponse(req, r): 150 | patch_coordinates(req, r, 'Latitude', 'Longitude', -1) 151 | 152 | def patchFortDeployRequest(req, r): 153 | patch_coordinates(req, r, 'PlayerLatDegrees', 'PlayerLngDegrees', 1) 154 | 155 | def patchFortRecallRequest(erq, r): 156 | patch_coordinates(req, r, 'PlayerLatDegrees', 'PlayerLngDegrees', 1) 157 | 158 | def patchAddFortModifierRequest(req, r): 159 | patch_coordinates(req, r, 'PlayerLatDegrees', 'PlayerLngDegrees', 1) 160 | 161 | def patchTradingSearchRequest(r): 162 | patch_coordinates(req, r, 'Lat', 'Lng', 1) 163 | 164 | def patchUseItemGymRequest(r): 165 | patch_coordinates(req, r, 'PlayerLatDegrees', 'PlayerLngDegrees', 1) 166 | 167 | def patchDiskEncounterRequest(r): 168 | patch_coordinates(req, r, 'PlayerLatDegrees', 'PlayerLngDegrees', 1) 169 | 170 | requestPatchers = { 171 | GET_MAP_OBJECTS: (GetMapObjectsProto, patchGetMapObjectsRequest), 172 | PLAYER_UPDATE: (PlayerUpdateProto, patchPlayerUpdateRequest), 173 | FORT_SEARCH: (FortSearchProto, patchFortSearchRequest), 174 | FORT_DETAILS: (FortDetailsProto, patchFortDetailsRequest), 175 | GET_GYM_DETAILS: (GetGymDetailsProto, patchGetGymDetailsRequest), 176 | #ENCOUNTER: (EncounterProto, patchEncounterRequest), 177 | GET_INCENSE_POKEMON: (GetIncensePokemonProto, patchGetIncensePokemonRequest), 178 | FORT_DEPLOY_POKEMON: (FortDeployProto, patchFortDeployRequest), 179 | FORT_RECALL_POKEMON: (FortRecallProto, patchFortRecallRequest), 180 | ADD_FORT_MODIFIER: (AddFortModifierProto, patchAddFortModifierRequest), 181 | TRADE_SEARCH: (TradingSearchProto, patchTradingSearchRequest), 182 | USE_ITEM_GYM: (UseItemGymProto, patchUseItemGymRequest), 183 | DISK_ENCOUNTER: (DiskEncounterProto, patchDiskEncounterRequest), 184 | } 185 | 186 | responsePatchers = { 187 | PLAYER_UPDATE: (PlayerUpdateOutProto, patchPlayerUpdateResponse), 188 | GET_MAP_OBJECTS: (GetMapObjectsOutProto, patchGetMapObjectsResponse), 189 | FORT_DETAILS: (FortDetailsOutProto, patchFortDetailsResponse), 190 | ENCOUNTER: (EncounterOutProto, patchEncounterResponse), 191 | INCENSE_ENCOUNTER: (IncenseEncounterOutProto, patchIncenseEncounterResponse), 192 | GET_INCENSE_POKEMON: (GetIncensePokemonOutProto, patchGetIncensePokemonResponse), 193 | 194 | } 195 | 196 | @concurrent 197 | def serverconnect(context, server_conn): 198 | server_conn.address = ('pgorelease.nianticlabs.com', 443) 199 | 200 | @concurrent 201 | def request(context, flow): 202 | if flow.match("~d pgorelease.nianticlabs.com"): 203 | request = RpcRequestEnvelopeProto() 204 | request.ParseFromString(flow.request.content) 205 | 206 | print('lol') 207 | 208 | delta_lat, delta_lng = get_delta_for_request(request.lat, request.long) 209 | 210 | # Create request metadata 211 | meta = { 212 | 'delta_lat': delta_lat, 213 | 'delta_lng': delta_lng 214 | } 215 | 216 | # Patch current location 217 | patch_coordinates(meta, request, 'lat', 'long', 1) 218 | 219 | print(meta, request.lat, request.long) 220 | 221 | for p in request.parameter: 222 | print('--> %s [%s]' % (Method.Name(p.key), request.request_id)) 223 | 224 | patcher = requestPatchers.get(p.key, None) 225 | 226 | if patcher != None: 227 | typ, fn = patcher 228 | p.value = patch_object(meta, p.value, typ, fn) 229 | 230 | # Store request for future usage 231 | request_map[request.request_id] = (meta, request) 232 | 233 | # Serialize new request 234 | flow.request.content = request.SerializeToString() 235 | 236 | @concurrent 237 | def response(context, flow): 238 | with decoded(flow.response): 239 | response = RpcResponseEnvelopeProto() 240 | response.ParseFromString(flow.response.content) 241 | 242 | if response.response_id == 0: 243 | return 244 | 245 | # Load previous request dat 246 | meta, request = request_map[response.response_id] 247 | del request_map[response.response_id] 248 | 249 | for i, _ in enumerate(request.parameter): 250 | p = request.parameter[i] 251 | 252 | print('<-- %s [%s]' % (Method.Name(p.key), request.request_id)) 253 | 254 | patcher = responsePatchers.get(p.key, None) 255 | 256 | if patcher != None: 257 | typ, fn = patcher 258 | response.returns[i] = patch_object(meta, response.returns[i], typ, fn) 259 | 260 | # Serialize new response 261 | flow.response.content = response.SerializeToString() 262 | 263 | -------------------------------------------------------------------------------- /proto/rpc_pb2.py: -------------------------------------------------------------------------------- 1 | # Generated by the protocol buffer compiler. DO NOT EDIT! 2 | # source: rpc.proto 3 | 4 | import sys 5 | _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) 6 | from google.protobuf.internal import enum_type_wrapper 7 | from google.protobuf import descriptor as _descriptor 8 | from google.protobuf import message as _message 9 | from google.protobuf import reflection as _reflection 10 | from google.protobuf import symbol_database as _symbol_database 11 | from google.protobuf import descriptor_pb2 12 | # @@protoc_insertion_point(imports) 13 | 14 | _sym_db = _symbol_database.Default() 15 | 16 | 17 | import holoholo_shared_pb2 as holoholo__shared__pb2 18 | import remaining_pb2 as remaining__pb2 19 | holoholo__shared__pb2 = remaining__pb2.holoholo__shared__pb2 20 | 21 | from holoholo_shared_pb2 import * 22 | from remaining_pb2 import * 23 | 24 | DESCRIPTOR = _descriptor.FileDescriptor( 25 | name='rpc.proto', 26 | package='Holoholo.Rpc', 27 | syntax='proto3', 28 | serialized_pb=_b('\n\trpc.proto\x12\x0cHoloholo.Rpc\x1a\x15holoholo_shared.proto\x1a\x0fremaining.proto\"A\n\rMapFieldEntry\x12!\n\x03key\x18\x01 \x01(\x0e\x32\x14.Holoholo.Rpc.Method\x12\r\n\x05value\x18\x02 \x01(\x0c\"6\n\x05Thing\x12\r\n\x05start\x18\x01 \x01(\x0c\x12\x11\n\ttimestamp\x18\x02 \x01(\x04\x12\x0b\n\x03\x65nd\x18\x03 \x01(\x0c\"\xb5\x03\n\x17RpcRequestEnvelopeProto\x12*\n\tdirection\x18\x01 \x01(\x0e\x32\x17.Holoholo.Rpc.Direction\x12\x12\n\nrequest_id\x18\x03 \x01(\x04\x12.\n\tparameter\x18\x04 \x03(\x0b\x32\x1b.Holoholo.Rpc.MapFieldEntry\x12\x0e\n\x06\x66ooter\x18\x06 \x01(\x0c\x12\x0b\n\x03lat\x18\x07 \x01(\x01\x12\x0c\n\x04long\x18\x08 \x01(\x01\x12\x10\n\x08\x61ltitude\x18\t \x01(\x01\x12<\n\x04\x61uth\x18\n \x01(\x0b\x32..Holoholo.Rpc.RpcRequestEnvelopeProto.AuthInfo\x12\"\n\x05thing\x18\x0b \x01(\x0b\x32\x13.Holoholo.Rpc.Thing\x12\x11\n\tunknown12\x18\x0c \x01(\x05\x1ax\n\x08\x41uthInfo\x12\x10\n\x08provider\x18\x01 \x01(\t\x12\x41\n\x05token\x18\x02 \x01(\x0b\x32\x32.Holoholo.Rpc.RpcRequestEnvelopeProto.AuthInfo.JWT\x1a\x17\n\x03JWT\x12\x10\n\x08\x63ontents\x18\x01 \x01(\t\"\xf9\x02\n\x18RpcResponseEnvelopeProto\x12*\n\tdirection\x18\x01 \x01(\x0e\x32\x17.Holoholo.Rpc.Direction\x12\x13\n\x0bresponse_id\x18\x02 \x01(\x04\x12\x0f\n\x07\x61pi_url\x18\x03 \x01(\t\x12\x0e\n\x06\x66ooter\x18\x06 \x01(\x0c\x12\x41\n\x08unknown7\x18\x07 \x01(\x0b\x32/.Holoholo.Rpc.RpcResponseEnvelopeProto.Unknown7\x12\x0b\n\x03lat\x18\x08 \x01(\x01\x12\x0c\n\x04long\x18\t \x01(\x01\x12\x10\n\x08\x61ltitude\x18\n \x01(\x01\x12\"\n\x05thing\x18\x0b \x01(\x0b\x32\x13.Holoholo.Rpc.Thing\x12\x11\n\tunknown12\x18\x0c \x01(\x05\x12\x0f\n\x07returns\x18\x64 \x03(\x0c\x1a\x43\n\x08Unknown7\x12\x11\n\tunknown71\x18\x01 \x01(\x0c\x12\x11\n\tunknown72\x18\x02 \x01(\x03\x12\x11\n\tunknown73\x18\x03 \x01(\x0c*3\n\tDirection\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0c\n\x08RESPONSE\x10\x01\x12\x0b\n\x07REQUEST\x10\x02P\x00P\x01\x62\x06proto3') 29 | , 30 | dependencies=[holoholo__shared__pb2.DESCRIPTOR,remaining__pb2.DESCRIPTOR,]) 31 | _sym_db.RegisterFileDescriptor(DESCRIPTOR) 32 | 33 | _DIRECTION = _descriptor.EnumDescriptor( 34 | name='Direction', 35 | full_name='Holoholo.Rpc.Direction', 36 | filename=None, 37 | file=DESCRIPTOR, 38 | values=[ 39 | _descriptor.EnumValueDescriptor( 40 | name='UNKNOWN', index=0, number=0, 41 | options=None, 42 | type=None), 43 | _descriptor.EnumValueDescriptor( 44 | name='RESPONSE', index=1, number=1, 45 | options=None, 46 | type=None), 47 | _descriptor.EnumValueDescriptor( 48 | name='REQUEST', index=2, number=2, 49 | options=None, 50 | type=None), 51 | ], 52 | containing_type=None, 53 | options=None, 54 | serialized_start=1010, 55 | serialized_end=1061, 56 | ) 57 | _sym_db.RegisterEnumDescriptor(_DIRECTION) 58 | 59 | Direction = enum_type_wrapper.EnumTypeWrapper(_DIRECTION) 60 | UNKNOWN = 0 61 | RESPONSE = 1 62 | REQUEST = 2 63 | 64 | 65 | 66 | _MAPFIELDENTRY = _descriptor.Descriptor( 67 | name='MapFieldEntry', 68 | full_name='Holoholo.Rpc.MapFieldEntry', 69 | filename=None, 70 | file=DESCRIPTOR, 71 | containing_type=None, 72 | fields=[ 73 | _descriptor.FieldDescriptor( 74 | name='key', full_name='Holoholo.Rpc.MapFieldEntry.key', index=0, 75 | number=1, type=14, cpp_type=8, label=1, 76 | has_default_value=False, default_value=0, 77 | message_type=None, enum_type=None, containing_type=None, 78 | is_extension=False, extension_scope=None, 79 | options=None), 80 | _descriptor.FieldDescriptor( 81 | name='value', full_name='Holoholo.Rpc.MapFieldEntry.value', index=1, 82 | number=2, type=12, cpp_type=9, label=1, 83 | has_default_value=False, default_value=_b(""), 84 | message_type=None, enum_type=None, containing_type=None, 85 | is_extension=False, extension_scope=None, 86 | options=None), 87 | ], 88 | extensions=[ 89 | ], 90 | nested_types=[], 91 | enum_types=[ 92 | ], 93 | options=None, 94 | is_extendable=False, 95 | syntax='proto3', 96 | extension_ranges=[], 97 | oneofs=[ 98 | ], 99 | serialized_start=67, 100 | serialized_end=132, 101 | ) 102 | 103 | 104 | _THING = _descriptor.Descriptor( 105 | name='Thing', 106 | full_name='Holoholo.Rpc.Thing', 107 | filename=None, 108 | file=DESCRIPTOR, 109 | containing_type=None, 110 | fields=[ 111 | _descriptor.FieldDescriptor( 112 | name='start', full_name='Holoholo.Rpc.Thing.start', index=0, 113 | number=1, type=12, cpp_type=9, label=1, 114 | has_default_value=False, default_value=_b(""), 115 | message_type=None, enum_type=None, containing_type=None, 116 | is_extension=False, extension_scope=None, 117 | options=None), 118 | _descriptor.FieldDescriptor( 119 | name='timestamp', full_name='Holoholo.Rpc.Thing.timestamp', index=1, 120 | number=2, type=4, cpp_type=4, label=1, 121 | has_default_value=False, default_value=0, 122 | message_type=None, enum_type=None, containing_type=None, 123 | is_extension=False, extension_scope=None, 124 | options=None), 125 | _descriptor.FieldDescriptor( 126 | name='end', full_name='Holoholo.Rpc.Thing.end', index=2, 127 | number=3, type=12, cpp_type=9, label=1, 128 | has_default_value=False, default_value=_b(""), 129 | message_type=None, enum_type=None, containing_type=None, 130 | is_extension=False, extension_scope=None, 131 | options=None), 132 | ], 133 | extensions=[ 134 | ], 135 | nested_types=[], 136 | enum_types=[ 137 | ], 138 | options=None, 139 | is_extendable=False, 140 | syntax='proto3', 141 | extension_ranges=[], 142 | oneofs=[ 143 | ], 144 | serialized_start=134, 145 | serialized_end=188, 146 | ) 147 | 148 | 149 | _RPCREQUESTENVELOPEPROTO_AUTHINFO_JWT = _descriptor.Descriptor( 150 | name='JWT', 151 | full_name='Holoholo.Rpc.RpcRequestEnvelopeProto.AuthInfo.JWT', 152 | filename=None, 153 | file=DESCRIPTOR, 154 | containing_type=None, 155 | fields=[ 156 | _descriptor.FieldDescriptor( 157 | name='contents', full_name='Holoholo.Rpc.RpcRequestEnvelopeProto.AuthInfo.JWT.contents', index=0, 158 | number=1, type=9, cpp_type=9, label=1, 159 | has_default_value=False, default_value=_b("").decode('utf-8'), 160 | message_type=None, enum_type=None, containing_type=None, 161 | is_extension=False, extension_scope=None, 162 | options=None), 163 | ], 164 | extensions=[ 165 | ], 166 | nested_types=[], 167 | enum_types=[ 168 | ], 169 | options=None, 170 | is_extendable=False, 171 | syntax='proto3', 172 | extension_ranges=[], 173 | oneofs=[ 174 | ], 175 | serialized_start=605, 176 | serialized_end=628, 177 | ) 178 | 179 | _RPCREQUESTENVELOPEPROTO_AUTHINFO = _descriptor.Descriptor( 180 | name='AuthInfo', 181 | full_name='Holoholo.Rpc.RpcRequestEnvelopeProto.AuthInfo', 182 | filename=None, 183 | file=DESCRIPTOR, 184 | containing_type=None, 185 | fields=[ 186 | _descriptor.FieldDescriptor( 187 | name='provider', full_name='Holoholo.Rpc.RpcRequestEnvelopeProto.AuthInfo.provider', index=0, 188 | number=1, type=9, cpp_type=9, label=1, 189 | has_default_value=False, default_value=_b("").decode('utf-8'), 190 | message_type=None, enum_type=None, containing_type=None, 191 | is_extension=False, extension_scope=None, 192 | options=None), 193 | _descriptor.FieldDescriptor( 194 | name='token', full_name='Holoholo.Rpc.RpcRequestEnvelopeProto.AuthInfo.token', index=1, 195 | number=2, type=11, cpp_type=10, label=1, 196 | has_default_value=False, default_value=None, 197 | message_type=None, enum_type=None, containing_type=None, 198 | is_extension=False, extension_scope=None, 199 | options=None), 200 | ], 201 | extensions=[ 202 | ], 203 | nested_types=[_RPCREQUESTENVELOPEPROTO_AUTHINFO_JWT, ], 204 | enum_types=[ 205 | ], 206 | options=None, 207 | is_extendable=False, 208 | syntax='proto3', 209 | extension_ranges=[], 210 | oneofs=[ 211 | ], 212 | serialized_start=508, 213 | serialized_end=628, 214 | ) 215 | 216 | _RPCREQUESTENVELOPEPROTO = _descriptor.Descriptor( 217 | name='RpcRequestEnvelopeProto', 218 | full_name='Holoholo.Rpc.RpcRequestEnvelopeProto', 219 | filename=None, 220 | file=DESCRIPTOR, 221 | containing_type=None, 222 | fields=[ 223 | _descriptor.FieldDescriptor( 224 | name='direction', full_name='Holoholo.Rpc.RpcRequestEnvelopeProto.direction', index=0, 225 | number=1, type=14, cpp_type=8, label=1, 226 | has_default_value=False, default_value=0, 227 | message_type=None, enum_type=None, containing_type=None, 228 | is_extension=False, extension_scope=None, 229 | options=None), 230 | _descriptor.FieldDescriptor( 231 | name='request_id', full_name='Holoholo.Rpc.RpcRequestEnvelopeProto.request_id', index=1, 232 | number=3, type=4, cpp_type=4, label=1, 233 | has_default_value=False, default_value=0, 234 | message_type=None, enum_type=None, containing_type=None, 235 | is_extension=False, extension_scope=None, 236 | options=None), 237 | _descriptor.FieldDescriptor( 238 | name='parameter', full_name='Holoholo.Rpc.RpcRequestEnvelopeProto.parameter', index=2, 239 | number=4, type=11, cpp_type=10, label=3, 240 | has_default_value=False, default_value=[], 241 | message_type=None, enum_type=None, containing_type=None, 242 | is_extension=False, extension_scope=None, 243 | options=None), 244 | _descriptor.FieldDescriptor( 245 | name='footer', full_name='Holoholo.Rpc.RpcRequestEnvelopeProto.footer', index=3, 246 | number=6, type=12, cpp_type=9, label=1, 247 | has_default_value=False, default_value=_b(""), 248 | message_type=None, enum_type=None, containing_type=None, 249 | is_extension=False, extension_scope=None, 250 | options=None), 251 | _descriptor.FieldDescriptor( 252 | name='lat', full_name='Holoholo.Rpc.RpcRequestEnvelopeProto.lat', index=4, 253 | number=7, type=1, cpp_type=5, label=1, 254 | has_default_value=False, default_value=float(0), 255 | message_type=None, enum_type=None, containing_type=None, 256 | is_extension=False, extension_scope=None, 257 | options=None), 258 | _descriptor.FieldDescriptor( 259 | name='long', full_name='Holoholo.Rpc.RpcRequestEnvelopeProto.long', index=5, 260 | number=8, type=1, cpp_type=5, label=1, 261 | has_default_value=False, default_value=float(0), 262 | message_type=None, enum_type=None, containing_type=None, 263 | is_extension=False, extension_scope=None, 264 | options=None), 265 | _descriptor.FieldDescriptor( 266 | name='altitude', full_name='Holoholo.Rpc.RpcRequestEnvelopeProto.altitude', index=6, 267 | number=9, type=1, cpp_type=5, label=1, 268 | has_default_value=False, default_value=float(0), 269 | message_type=None, enum_type=None, containing_type=None, 270 | is_extension=False, extension_scope=None, 271 | options=None), 272 | _descriptor.FieldDescriptor( 273 | name='auth', full_name='Holoholo.Rpc.RpcRequestEnvelopeProto.auth', index=7, 274 | number=10, type=11, cpp_type=10, label=1, 275 | has_default_value=False, default_value=None, 276 | message_type=None, enum_type=None, containing_type=None, 277 | is_extension=False, extension_scope=None, 278 | options=None), 279 | _descriptor.FieldDescriptor( 280 | name='thing', full_name='Holoholo.Rpc.RpcRequestEnvelopeProto.thing', index=8, 281 | number=11, type=11, cpp_type=10, label=1, 282 | has_default_value=False, default_value=None, 283 | message_type=None, enum_type=None, containing_type=None, 284 | is_extension=False, extension_scope=None, 285 | options=None), 286 | _descriptor.FieldDescriptor( 287 | name='unknown12', full_name='Holoholo.Rpc.RpcRequestEnvelopeProto.unknown12', index=9, 288 | number=12, type=5, cpp_type=1, label=1, 289 | has_default_value=False, default_value=0, 290 | message_type=None, enum_type=None, containing_type=None, 291 | is_extension=False, extension_scope=None, 292 | options=None), 293 | ], 294 | extensions=[ 295 | ], 296 | nested_types=[_RPCREQUESTENVELOPEPROTO_AUTHINFO, ], 297 | enum_types=[ 298 | ], 299 | options=None, 300 | is_extendable=False, 301 | syntax='proto3', 302 | extension_ranges=[], 303 | oneofs=[ 304 | ], 305 | serialized_start=191, 306 | serialized_end=628, 307 | ) 308 | 309 | 310 | _RPCRESPONSEENVELOPEPROTO_UNKNOWN7 = _descriptor.Descriptor( 311 | name='Unknown7', 312 | full_name='Holoholo.Rpc.RpcResponseEnvelopeProto.Unknown7', 313 | filename=None, 314 | file=DESCRIPTOR, 315 | containing_type=None, 316 | fields=[ 317 | _descriptor.FieldDescriptor( 318 | name='unknown71', full_name='Holoholo.Rpc.RpcResponseEnvelopeProto.Unknown7.unknown71', index=0, 319 | number=1, type=12, cpp_type=9, label=1, 320 | has_default_value=False, default_value=_b(""), 321 | message_type=None, enum_type=None, containing_type=None, 322 | is_extension=False, extension_scope=None, 323 | options=None), 324 | _descriptor.FieldDescriptor( 325 | name='unknown72', full_name='Holoholo.Rpc.RpcResponseEnvelopeProto.Unknown7.unknown72', index=1, 326 | number=2, type=3, cpp_type=2, label=1, 327 | has_default_value=False, default_value=0, 328 | message_type=None, enum_type=None, containing_type=None, 329 | is_extension=False, extension_scope=None, 330 | options=None), 331 | _descriptor.FieldDescriptor( 332 | name='unknown73', full_name='Holoholo.Rpc.RpcResponseEnvelopeProto.Unknown7.unknown73', index=2, 333 | number=3, type=12, cpp_type=9, label=1, 334 | has_default_value=False, default_value=_b(""), 335 | message_type=None, enum_type=None, containing_type=None, 336 | is_extension=False, extension_scope=None, 337 | options=None), 338 | ], 339 | extensions=[ 340 | ], 341 | nested_types=[], 342 | enum_types=[ 343 | ], 344 | options=None, 345 | is_extendable=False, 346 | syntax='proto3', 347 | extension_ranges=[], 348 | oneofs=[ 349 | ], 350 | serialized_start=941, 351 | serialized_end=1008, 352 | ) 353 | 354 | _RPCRESPONSEENVELOPEPROTO = _descriptor.Descriptor( 355 | name='RpcResponseEnvelopeProto', 356 | full_name='Holoholo.Rpc.RpcResponseEnvelopeProto', 357 | filename=None, 358 | file=DESCRIPTOR, 359 | containing_type=None, 360 | fields=[ 361 | _descriptor.FieldDescriptor( 362 | name='direction', full_name='Holoholo.Rpc.RpcResponseEnvelopeProto.direction', index=0, 363 | number=1, type=14, cpp_type=8, label=1, 364 | has_default_value=False, default_value=0, 365 | message_type=None, enum_type=None, containing_type=None, 366 | is_extension=False, extension_scope=None, 367 | options=None), 368 | _descriptor.FieldDescriptor( 369 | name='response_id', full_name='Holoholo.Rpc.RpcResponseEnvelopeProto.response_id', index=1, 370 | number=2, type=4, cpp_type=4, label=1, 371 | has_default_value=False, default_value=0, 372 | message_type=None, enum_type=None, containing_type=None, 373 | is_extension=False, extension_scope=None, 374 | options=None), 375 | _descriptor.FieldDescriptor( 376 | name='api_url', full_name='Holoholo.Rpc.RpcResponseEnvelopeProto.api_url', index=2, 377 | number=3, type=9, cpp_type=9, label=1, 378 | has_default_value=False, default_value=_b("").decode('utf-8'), 379 | message_type=None, enum_type=None, containing_type=None, 380 | is_extension=False, extension_scope=None, 381 | options=None), 382 | _descriptor.FieldDescriptor( 383 | name='footer', full_name='Holoholo.Rpc.RpcResponseEnvelopeProto.footer', index=3, 384 | number=6, type=12, cpp_type=9, label=1, 385 | has_default_value=False, default_value=_b(""), 386 | message_type=None, enum_type=None, containing_type=None, 387 | is_extension=False, extension_scope=None, 388 | options=None), 389 | _descriptor.FieldDescriptor( 390 | name='unknown7', full_name='Holoholo.Rpc.RpcResponseEnvelopeProto.unknown7', index=4, 391 | number=7, type=11, cpp_type=10, label=1, 392 | has_default_value=False, default_value=None, 393 | message_type=None, enum_type=None, containing_type=None, 394 | is_extension=False, extension_scope=None, 395 | options=None), 396 | _descriptor.FieldDescriptor( 397 | name='lat', full_name='Holoholo.Rpc.RpcResponseEnvelopeProto.lat', index=5, 398 | number=8, type=1, cpp_type=5, label=1, 399 | has_default_value=False, default_value=float(0), 400 | message_type=None, enum_type=None, containing_type=None, 401 | is_extension=False, extension_scope=None, 402 | options=None), 403 | _descriptor.FieldDescriptor( 404 | name='long', full_name='Holoholo.Rpc.RpcResponseEnvelopeProto.long', index=6, 405 | number=9, type=1, cpp_type=5, label=1, 406 | has_default_value=False, default_value=float(0), 407 | message_type=None, enum_type=None, containing_type=None, 408 | is_extension=False, extension_scope=None, 409 | options=None), 410 | _descriptor.FieldDescriptor( 411 | name='altitude', full_name='Holoholo.Rpc.RpcResponseEnvelopeProto.altitude', index=7, 412 | number=10, type=1, cpp_type=5, label=1, 413 | has_default_value=False, default_value=float(0), 414 | message_type=None, enum_type=None, containing_type=None, 415 | is_extension=False, extension_scope=None, 416 | options=None), 417 | _descriptor.FieldDescriptor( 418 | name='thing', full_name='Holoholo.Rpc.RpcResponseEnvelopeProto.thing', index=8, 419 | number=11, type=11, cpp_type=10, label=1, 420 | has_default_value=False, default_value=None, 421 | message_type=None, enum_type=None, containing_type=None, 422 | is_extension=False, extension_scope=None, 423 | options=None), 424 | _descriptor.FieldDescriptor( 425 | name='unknown12', full_name='Holoholo.Rpc.RpcResponseEnvelopeProto.unknown12', index=9, 426 | number=12, type=5, cpp_type=1, label=1, 427 | has_default_value=False, default_value=0, 428 | message_type=None, enum_type=None, containing_type=None, 429 | is_extension=False, extension_scope=None, 430 | options=None), 431 | _descriptor.FieldDescriptor( 432 | name='returns', full_name='Holoholo.Rpc.RpcResponseEnvelopeProto.returns', index=10, 433 | number=100, type=12, cpp_type=9, label=3, 434 | has_default_value=False, default_value=[], 435 | message_type=None, enum_type=None, containing_type=None, 436 | is_extension=False, extension_scope=None, 437 | options=None), 438 | ], 439 | extensions=[ 440 | ], 441 | nested_types=[_RPCRESPONSEENVELOPEPROTO_UNKNOWN7, ], 442 | enum_types=[ 443 | ], 444 | options=None, 445 | is_extendable=False, 446 | syntax='proto3', 447 | extension_ranges=[], 448 | oneofs=[ 449 | ], 450 | serialized_start=631, 451 | serialized_end=1008, 452 | ) 453 | 454 | _MAPFIELDENTRY.fields_by_name['key'].enum_type = holoholo__shared__pb2._METHOD 455 | _RPCREQUESTENVELOPEPROTO_AUTHINFO_JWT.containing_type = _RPCREQUESTENVELOPEPROTO_AUTHINFO 456 | _RPCREQUESTENVELOPEPROTO_AUTHINFO.fields_by_name['token'].message_type = _RPCREQUESTENVELOPEPROTO_AUTHINFO_JWT 457 | _RPCREQUESTENVELOPEPROTO_AUTHINFO.containing_type = _RPCREQUESTENVELOPEPROTO 458 | _RPCREQUESTENVELOPEPROTO.fields_by_name['direction'].enum_type = _DIRECTION 459 | _RPCREQUESTENVELOPEPROTO.fields_by_name['parameter'].message_type = _MAPFIELDENTRY 460 | _RPCREQUESTENVELOPEPROTO.fields_by_name['auth'].message_type = _RPCREQUESTENVELOPEPROTO_AUTHINFO 461 | _RPCREQUESTENVELOPEPROTO.fields_by_name['thing'].message_type = _THING 462 | _RPCRESPONSEENVELOPEPROTO_UNKNOWN7.containing_type = _RPCRESPONSEENVELOPEPROTO 463 | _RPCRESPONSEENVELOPEPROTO.fields_by_name['direction'].enum_type = _DIRECTION 464 | _RPCRESPONSEENVELOPEPROTO.fields_by_name['unknown7'].message_type = _RPCRESPONSEENVELOPEPROTO_UNKNOWN7 465 | _RPCRESPONSEENVELOPEPROTO.fields_by_name['thing'].message_type = _THING 466 | DESCRIPTOR.message_types_by_name['MapFieldEntry'] = _MAPFIELDENTRY 467 | DESCRIPTOR.message_types_by_name['Thing'] = _THING 468 | DESCRIPTOR.message_types_by_name['RpcRequestEnvelopeProto'] = _RPCREQUESTENVELOPEPROTO 469 | DESCRIPTOR.message_types_by_name['RpcResponseEnvelopeProto'] = _RPCRESPONSEENVELOPEPROTO 470 | DESCRIPTOR.enum_types_by_name['Direction'] = _DIRECTION 471 | 472 | MapFieldEntry = _reflection.GeneratedProtocolMessageType('MapFieldEntry', (_message.Message,), dict( 473 | DESCRIPTOR = _MAPFIELDENTRY, 474 | __module__ = 'rpc_pb2' 475 | # @@protoc_insertion_point(class_scope:Holoholo.Rpc.MapFieldEntry) 476 | )) 477 | _sym_db.RegisterMessage(MapFieldEntry) 478 | 479 | Thing = _reflection.GeneratedProtocolMessageType('Thing', (_message.Message,), dict( 480 | DESCRIPTOR = _THING, 481 | __module__ = 'rpc_pb2' 482 | # @@protoc_insertion_point(class_scope:Holoholo.Rpc.Thing) 483 | )) 484 | _sym_db.RegisterMessage(Thing) 485 | 486 | RpcRequestEnvelopeProto = _reflection.GeneratedProtocolMessageType('RpcRequestEnvelopeProto', (_message.Message,), dict( 487 | 488 | AuthInfo = _reflection.GeneratedProtocolMessageType('AuthInfo', (_message.Message,), dict( 489 | 490 | JWT = _reflection.GeneratedProtocolMessageType('JWT', (_message.Message,), dict( 491 | DESCRIPTOR = _RPCREQUESTENVELOPEPROTO_AUTHINFO_JWT, 492 | __module__ = 'rpc_pb2' 493 | # @@protoc_insertion_point(class_scope:Holoholo.Rpc.RpcRequestEnvelopeProto.AuthInfo.JWT) 494 | )) 495 | , 496 | DESCRIPTOR = _RPCREQUESTENVELOPEPROTO_AUTHINFO, 497 | __module__ = 'rpc_pb2' 498 | # @@protoc_insertion_point(class_scope:Holoholo.Rpc.RpcRequestEnvelopeProto.AuthInfo) 499 | )) 500 | , 501 | DESCRIPTOR = _RPCREQUESTENVELOPEPROTO, 502 | __module__ = 'rpc_pb2' 503 | # @@protoc_insertion_point(class_scope:Holoholo.Rpc.RpcRequestEnvelopeProto) 504 | )) 505 | _sym_db.RegisterMessage(RpcRequestEnvelopeProto) 506 | _sym_db.RegisterMessage(RpcRequestEnvelopeProto.AuthInfo) 507 | _sym_db.RegisterMessage(RpcRequestEnvelopeProto.AuthInfo.JWT) 508 | 509 | RpcResponseEnvelopeProto = _reflection.GeneratedProtocolMessageType('RpcResponseEnvelopeProto', (_message.Message,), dict( 510 | 511 | Unknown7 = _reflection.GeneratedProtocolMessageType('Unknown7', (_message.Message,), dict( 512 | DESCRIPTOR = _RPCRESPONSEENVELOPEPROTO_UNKNOWN7, 513 | __module__ = 'rpc_pb2' 514 | # @@protoc_insertion_point(class_scope:Holoholo.Rpc.RpcResponseEnvelopeProto.Unknown7) 515 | )) 516 | , 517 | DESCRIPTOR = _RPCRESPONSEENVELOPEPROTO, 518 | __module__ = 'rpc_pb2' 519 | # @@protoc_insertion_point(class_scope:Holoholo.Rpc.RpcResponseEnvelopeProto) 520 | )) 521 | _sym_db.RegisterMessage(RpcResponseEnvelopeProto) 522 | _sym_db.RegisterMessage(RpcResponseEnvelopeProto.Unknown7) 523 | 524 | 525 | # @@protoc_insertion_point(module_scope) 526 | -------------------------------------------------------------------------------- /holoholo_shared.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package Holoholo.Rpc; 4 | 5 | enum Custom_TeamColor { 6 | NEUTRAL = 0; 7 | BLUE = 1; 8 | RED = 2; 9 | YELLOW = 3; 10 | } 11 | 12 | enum Custom_PokemonName { 13 | MISSINGNO = 0; // just kidding 14 | BULBASAUR = 1; 15 | IVYSAUR = 2; 16 | VENUSAUR = 3; 17 | CHARMENDER = 4; 18 | CHARMELEON = 5; 19 | CHARIZARD = 6; 20 | SQUIRTLE = 7; 21 | WARTORTLE = 8; 22 | BLASTOISE = 9; 23 | CATERPIE = 10; 24 | METAPOD = 11; 25 | BUTTERFREE = 12; 26 | WEEDLE = 13; 27 | KAKUNA = 14; 28 | BEEDRILL = 15; 29 | PIDGEY = 16; 30 | PIDGEOTTO = 17; 31 | PIDGEOT = 18; 32 | RATTATA = 19; 33 | RATICATE = 20; 34 | SPEAROW = 21; 35 | FEAROW = 22; 36 | EKANS = 23; 37 | ARBOK = 24; 38 | PIKACHU = 25; 39 | RAICHU = 26; 40 | SANDSHREW = 27; 41 | SANDLASH = 28; 42 | NIDORAN_FEMALE = 29; 43 | NIDORINA = 30; 44 | NIDOQUEEN = 31; 45 | NIDORAN_MALE = 32; 46 | NIDORINO = 33; 47 | NIDOKING = 34; 48 | CLEFARY = 35; 49 | CLEFABLE = 36; 50 | VULPIX = 37; 51 | NINETALES = 38; 52 | JIGGLYPUFF = 39; 53 | WIGGLYTUFF = 40; 54 | ZUBAT = 41; 55 | GOLBAT = 42; 56 | ODDISH = 43; 57 | GLOOM = 44; 58 | VILEPLUME = 45; 59 | PARAS = 46; 60 | PARASECT = 47; 61 | VENONAT = 48; 62 | VENOMOTH = 49; 63 | DIGLETT = 50; 64 | DUGTRIO = 51; 65 | MEOWTH = 52; 66 | PERSIAN = 53; 67 | PSYDUCK = 54; 68 | GOLDUCK = 55; 69 | MANKEY = 56; 70 | PRIMEAPE = 57; 71 | GROWLITHE = 58; 72 | ARCANINE = 59; 73 | POLIWAG = 60; 74 | POLIWHIRL = 61; 75 | POLIWRATH = 62; 76 | ABRA = 63; 77 | KADABRA = 64; 78 | ALAKHAZAM = 65; 79 | MACHOP = 66; 80 | MACHOKE = 67; 81 | MACHAMP = 68; 82 | BELLSPROUT = 69; 83 | WEEPINBELL = 70; 84 | VICTREEBELL = 71; 85 | TENTACOOL = 72; 86 | TENTACRUEL = 73; 87 | GEODUGE = 74; 88 | GRAVELER = 75; 89 | GOLEM = 76; 90 | PONYTA = 77; 91 | RAPIDASH = 78; 92 | SLOWPOKE = 79; 93 | SLOWBRO = 80; 94 | MAGNEMITE = 81; 95 | MAGNETON = 82; 96 | FARFETCHD = 83; 97 | DODUO = 84; 98 | DODRIO = 85; 99 | SEEL = 86; 100 | DEWGONG = 87; 101 | GRIMER = 88; 102 | MUK = 89; 103 | SHELLDER = 90; 104 | CLOYSTER = 91; 105 | GASTLY = 92; 106 | HAUNTER = 93; 107 | GENGAR = 94; 108 | ONIX = 95; 109 | DROWZEE = 96; 110 | HYPNO = 97; 111 | KRABBY = 98; 112 | KINGLER = 99; 113 | VOLTORB = 100; 114 | ELECTRODE = 101; 115 | EXEGGCUTE = 102; 116 | EXEGGUTOR = 103; 117 | CUBONE = 104; 118 | MAROWAK = 105; 119 | HITMONLEE = 106; 120 | HITMONCHAN = 107; 121 | LICKITUNG = 108; 122 | KOFFING = 109; 123 | WEEZING = 110; 124 | RHYHORN = 111; 125 | RHYDON = 112; 126 | CHANSEY = 113; 127 | TANGELA = 114; 128 | KANGASKHAN = 115; 129 | HORSEA = 116; 130 | SEADRA = 117; 131 | GOLDEEN = 118; 132 | SEAKING = 119; 133 | STARYU = 120; 134 | STARMIE = 121; 135 | MR_MIME = 122; 136 | SCYTHER = 123; 137 | JYNX = 124; 138 | ELECTABUZZ = 125; 139 | MAGMAR = 126; 140 | PINSIR = 127; 141 | TAUROS = 128; 142 | MAGIKARP = 129; 143 | GYARADOS = 130; 144 | LAPRAS = 131; 145 | DITTO = 132; 146 | EEVEE = 133; 147 | VAPOREON = 134; 148 | JOLTEON = 135; 149 | FLAREON = 136; 150 | PORYGON = 137; 151 | OMANYTE = 138; 152 | OMASTAR = 139; 153 | KABUTO = 140; 154 | KABUTOPS = 141; 155 | AERODACTYL = 142; 156 | SNORLAX = 143; 157 | ARTICUNO = 144; 158 | ZAPDOS = 145; 159 | MOLTRES = 146; 160 | DRATINI = 147; 161 | DRAGONAIR = 148; 162 | DRAGONITE = 149; 163 | MEWTWO = 150; 164 | MEW = 151; 165 | } 166 | 167 | enum Method { 168 | METHOD_UNSET = 0; 169 | PLAYER_UPDATE = 1; 170 | GET_PLAYER = 2; 171 | GET_INVENTORY = 4; 172 | DOWNLOAD_SETTINGS = 5; 173 | DOWNLOAD_ITEM_TEMPLATES = 6; 174 | DOWNLOAD_REMOTE_CONFIG_VERSION = 7; 175 | FORT_SEARCH = 101; 176 | ENCOUNTER = 102; 177 | CATCH_POKEMON = 103; 178 | FORT_DETAILS = 104; 179 | ITEM_USE = 105; 180 | GET_MAP_OBJECTS = 106; 181 | FORT_DEPLOY_POKEMON = 110; 182 | FORT_RECALL_POKEMON = 111; 183 | RELEASE_POKEMON = 112; 184 | USE_ITEM_POTION = 113; 185 | USE_ITEM_CAPTURE = 114; 186 | USE_ITEM_FLEE = 115; 187 | USE_ITEM_REVIVE = 116; 188 | TRADE_SEARCH = 117; 189 | TRADE_OFFER = 118; 190 | TRADE_RESPONSE = 119; 191 | TRADE_RESULT = 120; 192 | GET_PLAYER_PROFILE = 121; 193 | GET_ITEM_PACK = 122; 194 | BUY_ITEM_PACK = 123; 195 | BUY_GEM_PACK = 124; 196 | EVOLVE_POKEMON = 125; 197 | GET_HATCHED_EGGS = 126; 198 | ENCOUNTER_TUTORIAL_COMPLETE = 127; 199 | LEVEL_UP_REWARDS = 128; 200 | CHECK_AWARDED_BADGES = 129; 201 | USE_ITEM_GYM = 133; 202 | GET_GYM_DETAILS = 134; 203 | START_GYM_BATTLE = 135; 204 | ATTACK_GYM = 136; 205 | RECYCLE_INVENTORY_ITEM = 137; 206 | COLLECT_DAILY_BONUS = 138; 207 | USE_ITEM_XP_BOOST = 139; 208 | USE_ITEM_EGG_INCUBATOR = 140; 209 | USE_INCENSE = 141; 210 | GET_INCENSE_POKEMON = 142; 211 | INCENSE_ENCOUNTER = 143; 212 | ADD_FORT_MODIFIER = 144; 213 | DISK_ENCOUNTER = 145; 214 | COLLECT_DAILY_DEFENDER_BONUS = 146; 215 | UPGRADE_POKEMON = 147; 216 | SET_FAVORITE_POKEMON = 148; 217 | NICKNAME_POKEMON = 149; 218 | EQUIP_BADGE = 150; 219 | SET_CONTACT_SETTINGS = 151; 220 | GET_ASSET_DIGEST = 300; 221 | GET_DOWNLOAD_URLS = 301; 222 | GET_SUGGESTED_CODENAMES = 401; 223 | CHECK_CODENAME_AVAILABLE = 402; 224 | CLAIM_CODENAME = 403; 225 | SET_AVATAR = 404; 226 | SET_PLAYER_TEAM = 405; 227 | MARK_TUTORIAL_COMPLETE = 406; 228 | LOAD_SPAWN_POINTS = 500; 229 | ECHO = 666; 230 | DEBUG_UPDATE_INVENTORY = 700; 231 | DEBUG_DELETE_PLAYER = 701; 232 | SFIDA_REGISTRATION = 800; 233 | SFIDA_ACTION_LOG = 801; 234 | SFIDA_CERTIFICATION = 802; 235 | SFIDA_UPDATE = 803; 236 | SFIDA_ACTION = 804; 237 | SFIDA_DOWSER = 805; 238 | SFIDA_CAPTURE = 806; 239 | } 240 | 241 | enum FortType { 242 | GYM = 0; 243 | CHECKPOINT = 1; //Pokestop 244 | } 245 | 246 | enum Item { 247 | ITEM_UNKNOWN = 0; 248 | ITEM_POKE_BALL = 1; 249 | ITEM_GREAT_BALL = 2; 250 | ITEM_ULTRA_BALL = 3; 251 | ITEM_MASTER_BALL = 4; 252 | ITEM_POTION = 101; 253 | ITEM_SUPER_POTION = 102; 254 | ITEM_HYPER_POTION = 103; 255 | ITEM_MAX_POTION = 104; 256 | ITEM_REVIVE = 201; 257 | ITEM_MAX_REVIVE = 202; 258 | ITEM_LUCKY_EGG = 301; 259 | ITEM_INCENSE_ORDINARY = 401; 260 | ITEM_INCENSE_SPICY = 402; 261 | ITEM_INCENSE_COOL = 403; 262 | ITEM_INCENSE_FLORAL = 404; 263 | ITEM_TROY_DISK = 501; 264 | ITEM_X_ATTACK = 602; 265 | ITEM_X_DEFENSE = 603; 266 | ITEM_X_MIRACLE = 604; 267 | ITEM_RAZZ_BERRY = 701; 268 | ITEM_BLUK_BERRY = 702; 269 | ITEM_NANAB_BERRY = 703; 270 | ITEM_WEPAR_BERRY = 704; 271 | ITEM_PINAP_BERRY = 705; 272 | ITEM_SPECIAL_CAMERA = 801; 273 | ITEM_INCUBATOR_BASIC_UNLIMITED = 901; 274 | ITEM_INCUBATOR_BASIC = 902; 275 | ITEM_POKEMON_STORAGE_UPGRADE = 1001; 276 | ITEM_ITEM_STORAGE_UPGRADE = 1002; 277 | } 278 | message Types { 279 | message FortSearchOutProto { 280 | enum Result { 281 | NO_RESULT_SET = 0; 282 | SUCCESS = 1; 283 | OUT_OF_RANGE = 2; 284 | IN_COOLDOWN_PERIOD = 3; 285 | INVENTORY_FULL = 4; 286 | } 287 | } 288 | message StartGymBattleOutProto { 289 | enum Result { 290 | UNSET = 0; 291 | SUCCESS = 1; 292 | ERROR_GYM_NOT_FOUND = 2; 293 | ERROR_GYM_NEUTRAL = 3; 294 | ERROR_GYM_WRONG_TEAM = 4; 295 | ERROR_GYM_EMPTY = 5; 296 | ERROR_INVALID_DEFENDER = 6; 297 | ERROR_TRAINING_INVALID_ATTACKER_COUNT = 7; 298 | ERROR_ALL_POKEMON_FAINTED = 8; 299 | ERROR_TOO_MANY_BATTLES = 9; 300 | ERROR_TOO_MANY_PLAYERS = 10; 301 | ERROR_GYM_BATTLE_LOCKOUT = 11; 302 | ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 12; 303 | ERROR_NOT_IN_RANGE = 13; 304 | } 305 | } 306 | message AttackGymOutProto { 307 | enum Result { 308 | UNSET = 0; 309 | SUCCESS = 1; 310 | ERROR_INVALID_ATTACK_ACTIONS = 2; 311 | ERROR_NOT_IN_RANGE = 3; 312 | } 313 | } 314 | message BattleActionProto { 315 | enum ActionType { 316 | UNSET = 0; 317 | ATTACK = 1; 318 | DODGE = 2; 319 | SPECIAL_ATTACK = 3; 320 | SWAP_POKEMON = 4; 321 | FAINT = 5; 322 | PLAYER_JOIN = 6; 323 | PLAYER_QUIT = 7; 324 | VICTORY = 8; 325 | DEFEAT = 9; 326 | TIMED_OUT = 10; 327 | } 328 | } 329 | message BattleLogProto { 330 | enum BattleType { 331 | BATTLE_TYPE_UNSET = 0; 332 | NORMAL = 1; 333 | TRAINING = 2; 334 | } 335 | enum State { 336 | STATE_UNSET = 0; 337 | ACTIVE = 1; 338 | VICTORY = 2; 339 | DEFEATED = 3; 340 | TIMED_OUT = 4; 341 | } 342 | } 343 | message NicknamePokemonOutProto { 344 | enum Result { 345 | UNSET = 0; 346 | SUCCESS = 1; 347 | ERROR_INVALID_NICKNAME = 2; 348 | ERROR_POKEMON_NOT_FOUND = 3; 349 | ERROR_POKEMON_IS_EGG = 4; 350 | } 351 | } 352 | 353 | message CollectDailyBonusOutProto { 354 | enum Result { 355 | UNSET = 0; 356 | SUCCESS = 1; 357 | FAILURE = 2; 358 | TOO_SOON = 3; 359 | } 360 | } 361 | message CollectDailyDefenderBonusOutProto { 362 | enum Result { 363 | UNSET = 0; 364 | SUCCESS = 1; 365 | FAILURE = 2; 366 | TOO_SOON = 3; 367 | NO_DEFENDERS = 4; 368 | } 369 | } 370 | message EncounterOutProto { 371 | enum Status { 372 | ENCOUNTER_ERROR = 0; 373 | ENCOUNTER_SUCCESS = 1; 374 | ENCOUNTER_NOT_FOUND = 2; 375 | ENCOUNTER_CLOSED = 3; 376 | ENCOUNTER_POKEMON_FLED = 4; 377 | ENCOUNTER_NOT_IN_RANGE = 5; 378 | ENCOUNTER_ALREADY_HAPPENED = 6; 379 | POKEMON_INVENTORY_FULL = 7; 380 | } 381 | enum Background { 382 | PARK = 0; 383 | DESERT = 1; 384 | } 385 | } 386 | message CatchPokemonOutProto { 387 | enum Status { 388 | CATCH_ERROR = 0; 389 | CATCH_SUCCESS = 1; 390 | CATCH_ESCAPE = 2; 391 | CATCH_FLEE = 3; 392 | CATCH_MISSED = 4; 393 | } 394 | } 395 | message EncounterTutorialCompleteOutProto { 396 | enum Result { 397 | UNSET = 0; 398 | SUCCESS = 1; 399 | ERROR_INVALID_POKEMON = 2; 400 | } 401 | } 402 | message UseIncenseActionOutProto { 403 | enum Result { 404 | UNKNOWN = 0; 405 | SUCCESS = 1; 406 | INCENSE_ALREADY_ACTIVE = 2; 407 | NONE_IN_INVENTORY = 3; 408 | LOCATION_UNSET = 4; 409 | } 410 | } 411 | message GetIncensePokemonOutProto { 412 | enum Result { 413 | INCENSE_ENCOUNTER_UNKNOWN = 0; 414 | INCENSE_ENCOUNTER_AVAILABLE = 1; 415 | INCENSE_ENCOUNTER_NOT_AVAILABLE = 2; 416 | } 417 | } 418 | message IncenseEncounterOutProto { 419 | enum Result { 420 | INCENSE_ENCOUNTER_UNKNOWN = 0; 421 | INCENSE_ENCOUNTER_SUCCESS = 1; 422 | INCENSE_ENCOUNTER_NOT_AVAILABLE = 2; 423 | POKEMON_INVENTORY_FULL = 3; 424 | } 425 | } 426 | message DiskEncounterOutProto { 427 | enum Result { 428 | UNKNOWN = 0; 429 | SUCCESS = 1; 430 | NOT_AVAILABLE = 2; 431 | NOT_IN_RANGE = 3; 432 | ENCOUNTER_ALREADY_FINISHED = 4; 433 | POKEMON_INVENTORY_FULL = 5; 434 | } 435 | } 436 | message EvolvePokemonOutProto { 437 | enum Result { 438 | UNSET = 0; 439 | SUCCESS = 1; 440 | FAILED_POKEMON_MISSING = 2; 441 | FAILED_INSUFFICIENT_RESOURCES = 3; 442 | FAILED_POKEMON_CANNOT_EVOLVE = 4; 443 | FAILED_POKEMON_IS_DEPLOYED = 5; 444 | } 445 | } 446 | message FortDeployOutProto { 447 | enum Result { 448 | NO_RESULT_SET = 0; 449 | SUCCESS = 1; 450 | ERROR_ALREADY_HAS_POKEMON_ON_FORT = 2; 451 | ERROR_OPPOSING_TEAM_OWNS_FORT = 3; 452 | ERROR_FORT_IS_FULL = 4; 453 | ERROR_NOT_IN_RANGE = 5; 454 | ERROR_PLAYER_HAS_NO_TEAM = 6; 455 | ERROR_POKEMON_NOT_FULL_HP = 7; 456 | ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 8; 457 | } 458 | } 459 | message FortRecallOutProto { 460 | enum Result { 461 | NO_RESULT_SET = 0; 462 | SUCCESS = 1; 463 | ERROR_NOT_IN_RANGE = 2; 464 | ERROR_POKEMON_NOT_ON_FORT = 3; 465 | ERROR_NO_PLAYER = 4; 466 | } 467 | } 468 | message AddFortModifierOutProto { 469 | enum Result { 470 | NO_RESULT_SET = 0; 471 | SUCCESS = 1; 472 | FORT_ALREADY_HAS_MODIFIER = 2; 473 | TOO_FAR_AWAY = 3; 474 | NO_ITEM_IN_INVENTORY = 4; 475 | } 476 | } 477 | message GetGameMasterClientTemplatesOutProto { 478 | enum Result { 479 | UNSET = 0; 480 | SUCCESS = 1; 481 | } 482 | } 483 | message GetRemoteConfigVersionsOutProto { 484 | enum Result { 485 | UNSET = 0; 486 | SUCCESS = 1; 487 | } 488 | } 489 | message GetMapObjectsOutProto { 490 | enum Status { 491 | UNSET = 0; 492 | SUCCESS = 1; 493 | LOCATION_UNSET = 2; 494 | } 495 | } 496 | message GetGymDetailsOutProto { 497 | enum Result { 498 | UNSET = 0; 499 | SUCCESS = 1; 500 | ERROR_NOT_IN_RANGE = 2; 501 | } 502 | } 503 | message CatchPokemonLogEntry { 504 | enum Result { 505 | UNSET = 0; 506 | POKEMON_CAPTURED = 1; 507 | POKEMON_FLED = 2; 508 | } 509 | } 510 | message FortSearchLogEntry { 511 | enum Result { 512 | UNSET = 0; 513 | SUCCESS = 1; 514 | } 515 | } 516 | message PlayerProfileOutProto { 517 | enum Result { 518 | UNSET = 0; 519 | SUCCESS = 1; 520 | } 521 | } 522 | message LevelUpRewardsOutProto { 523 | enum Result { 524 | UNSET = 0; 525 | SUCCESS = 1; 526 | AWARDED_ALREADY = 2; 527 | } 528 | } 529 | message SetFavoritePokemonOutProto { 530 | enum Result { 531 | UNSET = 0; 532 | SUCCESS = 1; 533 | ERROR_POKEMON_NOT_FOUND = 2; 534 | ERROR_POKEMON_IS_EGG = 3; 535 | } 536 | } 537 | message ReleasePokemonOutProto { 538 | enum Status { 539 | UNSET = 0; 540 | SUCCESS = 1; 541 | POKEMON_DEPLOYED = 2; 542 | FAILED = 3; 543 | ERROR_POKEMON_IS_EGG = 4; 544 | } 545 | } 546 | 547 | message CodenameResultProto { 548 | enum Status { 549 | UNSET = 0; 550 | SUCCESS = 1; 551 | CODENAME_NOT_AVAILABLE = 2; 552 | CODENAME_NOT_VALID = 3; 553 | CURRENT_OWNER = 4; 554 | CODENAME_CHANGE_NOT_ALLOWED = 5; 555 | } 556 | } 557 | message SetAvatarOutProto { 558 | enum Status { 559 | UNSET = 0; 560 | SUCCESS = 1; 561 | AVATAR_ALREADY_SET = 2; 562 | FAILURE = 3; 563 | } 564 | } 565 | message SetContactSettingsOutProto { 566 | enum Status { 567 | UNSET = 0; 568 | SUCCESS = 1; 569 | FAILURE = 2; 570 | } 571 | } 572 | message SetPlayerTeamOutProto { 573 | enum Status { 574 | UNSET = 0; 575 | SUCCESS = 1; 576 | TEAM_ALREADY_SET = 2; 577 | FAILURE = 3; 578 | } 579 | } 580 | message RecycleItemOutProto { 581 | enum Result { 582 | UNSET = 0; 583 | SUCCESS = 1; 584 | ERROR_NOT_ENOUGH_COPIES = 2; 585 | ERROR_CANNOT_RECYCLE_INCUBATORS = 3; 586 | } 587 | } 588 | message EquipBadgeOutProto { 589 | enum Result { 590 | UNSET = 0; 591 | SUCCESS = 1; 592 | COOLDOWN_ACTIVE = 2; 593 | NOT_QUALIFIED = 3; 594 | } 595 | } 596 | message GetActionLogResponse { 597 | enum Result { 598 | UNSET = 0; 599 | SUCCESS = 1; 600 | } 601 | } 602 | message TradingSearchOutProto { 603 | enum Result { 604 | UNSET = 0; 605 | SUCCESS = 1; 606 | } 607 | } 608 | message TradingOfferOutProto { 609 | enum Result { 610 | UNSET = 0; 611 | SUCCESS = 1; 612 | CONNECTION_LOST = 2; 613 | } 614 | } 615 | message PollForTradeResponseOutProto { 616 | enum Result { 617 | UNSET = 0; 618 | ACCEPT_OFFER = 1; 619 | TRADE_CANCELED = 2; 620 | } 621 | } 622 | message TradingResultOutProto { 623 | enum Result { 624 | UNSET = 0; 625 | TRADE_COMPLETE = 1; 626 | TRADE_CANCELLED_OFFER = 2; 627 | } 628 | } 629 | message UpgradePokemonOutProto { 630 | enum Result { 631 | UNSET = 0; 632 | SUCCESS = 1; 633 | ERROR_POKEMON_NOT_FOUND = 2; 634 | ERROR_INSUFFICIENT_RESOURCES = 3; 635 | ERROR_UPGRADE_NOT_AVAILABLE = 4; 636 | ERROR_POKEMON_IS_DEPLOYED = 5; 637 | } 638 | } 639 | message UseItemPotionOutProto { 640 | enum Result { 641 | UNSET = 0; 642 | SUCCESS = 1; 643 | ERROR_NO_POKEMON = 2; 644 | ERROR_CANNOT_USE = 3; 645 | ERROR_DEPLOYED_TO_FORT = 4; 646 | } 647 | } 648 | message UseItemReviveOutProto { 649 | enum Result { 650 | UNSET = 0; 651 | SUCCESS = 1; 652 | ERROR_NO_POKEMON = 2; 653 | ERROR_CANNOT_USE = 3; 654 | ERROR_DEPLOYED_TO_FORT = 4; 655 | } 656 | } 657 | message UseItemGymOutProto { 658 | enum Result { 659 | UNSET = 0; 660 | SUCCESS = 1; 661 | ERROR_CANNOT_USE = 2; 662 | ERROR_NOT_IN_RANGE = 3; 663 | } 664 | } 665 | message UseItemXpBoostOutProto { 666 | enum Result { 667 | UNSET = 0; 668 | SUCCESS = 1; 669 | ERROR_INVALID_ITEM_TYPE = 2; 670 | ERROR_XP_BOOST_ALREADY_ACTIVE = 3; 671 | ERROR_NO_ITEMS_REMAINING = 4; 672 | ERROR_LOCATION_UNSET = 5; 673 | } 674 | } 675 | message UseItemEggIncubatorOutProto { 676 | enum Result { 677 | UNSET = 0; 678 | SUCCESS = 1; 679 | ERROR_INCUBATOR_NOT_FOUND = 2; 680 | ERROR_POKEMON_EGG_NOT_FOUND = 3; 681 | ERROR_POKEMON_ID_NOT_EGG = 4; 682 | ERROR_INCUBATOR_ALREADY_IN_USE = 5; 683 | ERROR_POKEMON_ALREADY_INCUBATING = 6; 684 | ERROR_INCUBATOR_NO_USES_REMAINING = 7; 685 | } 686 | } 687 | } 688 | 689 | message PokemonProto { 690 | int32 Id = 1; 691 | int32 PokemonId = 2; 692 | int32 Cp = 3; 693 | int32 Stamina = 4; 694 | int32 MaxStamina = 5; 695 | int32 Move1 = 6; 696 | int32 Move2 = 7; 697 | int32 DeployedFortId = 8; 698 | string OwnerName = 9; 699 | int32 IsEgg = 10; 700 | int32 EggKmWalkedTarget = 11; 701 | int32 EggKmWalkedStart = 12; 702 | int32 Origin = 14; 703 | float HeightM = 15; 704 | float WeightKg = 16; 705 | int32 IndividualAttack = 17; 706 | int32 IndividualDefense = 18; 707 | int32 IndividualStamina = 19; 708 | int32 CpMultiplier = 20; 709 | int32 Pokeball = 21; 710 | uint64 CapturedS2CellId = 22; 711 | int32 BattlesAttacked = 23; 712 | int32 BattlesDefended = 24; 713 | int32 EggIncubatorId = 25; 714 | uint64 CreationTimeMs = 26; 715 | int32 NumUpgrades = 27; 716 | int32 AdditionalCpMultiplier = 28; 717 | int32 Favorite = 29; 718 | string Nickname = 30; 719 | int32 FromFort = 31; 720 | } 721 | 722 | message ItemProto { 723 | Holoholo.Rpc.Item Item = 1; 724 | int32 Count = 2; 725 | bool Unseen = 3; 726 | } 727 | 728 | // A "fort" is the internal name for a gym or pokestop point of interest 729 | message PokemonFortProto { 730 | enum FortSponsor { 731 | UNSET_SPONSOR = 0; // was originally "UNSET" in the app itself 732 | MCDONALDS = 1; 733 | POKEMON_STORE = 2; 734 | } 735 | 736 | enum FortRenderingType { 737 | DEFAULT = 0; 738 | INTERNAL_TEST = 1; 739 | } 740 | 741 | 742 | string FortId = 1; 743 | int64 LastModifiedMs = 2; 744 | double Latitude = 3; 745 | double Longitude = 4; 746 | bool Enabled = 8; 747 | 748 | // Fields related to gyms only 749 | 750 | // Team that owns the gym 751 | Custom_TeamColor Team = 5; 752 | 753 | // Highest CP Pokemon at the gym 754 | Custom_PokemonName GuardPokemonId = 6; 755 | int32 GuardPokemonLevel = 7; 756 | 757 | // Prestigate / experience of the gym 758 | int64 GymPoints = 10; 759 | 760 | // Whether someone is battling at the gym currently 761 | bool IsInBattle = 11; 762 | 763 | // Fields related to pokestops only 764 | 765 | // If 1, this is a pokestop 766 | Holoholo.Rpc.FortType FortType = 9; 767 | 768 | // Timestamp when the pokestop can be activated again to get items / xp 769 | int64 CooldownCompleteMs = 14; 770 | 771 | FortSponsor Sponsor = 15; 772 | FortRenderingType RenderingType = 16; 773 | 774 | // Might represent the type of item applied to the pokestop, right only lures can be applied 775 | bytes ActiveFortModifier = 12; 776 | 777 | message Custom_FortLureInfoProto { 778 | string FortId = 1; 779 | double NotSure2 = 2; 780 | Custom_PokemonName ActivePokemon = 3; 781 | int64 LureExpiryMs = 4; 782 | } 783 | Custom_FortLureInfoProto FortLureInfo = 13; 784 | } 785 | 786 | message PlayerPublicProfileProto { 787 | string Name = 1; 788 | int32 Level = 2; 789 | PlayerAvatarProto Avatar = 3; 790 | } 791 | 792 | message PlayerAvatarProto { 793 | int32 Avatar = 8; 794 | int32 Skin = 2; 795 | int32 Hair = 3; 796 | int32 Shirt = 4; 797 | int32 Pants = 5; 798 | int32 Hat = 6; 799 | int32 Shoes = 7; 800 | int32 Eyes = 9; 801 | int32 Backpack = 10; 802 | } 803 | 804 | message GymStateProto { 805 | PokemonFortProto FortMapData = 1; 806 | repeated GymMembershipProto GymMembership = 2; 807 | } 808 | 809 | message GymMembershipProto { 810 | PokemonProto Pokemon = 1; 811 | PlayerPublicProfileProto TrainerPublicProfile = 2; 812 | } 813 | 814 | message AppliedItemProto { 815 | Rpc.Item Item = 1; 816 | HoloItemType ItemType = 2; 817 | int64 ExpirationMs = 3; 818 | int64 AppliedMs = 4; 819 | } 820 | 821 | enum HoloPokemonFamilyId { 822 | FAMILY_UNSET = 0; 823 | V0001_FAMILY_BULBASAUR = 1; 824 | V0004_FAMILY_CHARMANDER = 4; 825 | V0007_FAMILY_SQUIRTLE = 7; 826 | V0010_FAMILY_CATERPIE = 10; 827 | V0013_FAMILY_WEEDLE = 13; 828 | V0016_FAMILY_PIDGEY = 16; 829 | V0019_FAMILY_RATTATA = 19; 830 | V0021_FAMILY_SPEAROW = 21; 831 | V0023_FAMILY_EKANS = 23; 832 | V0025_FAMILY_PIKACHU = 25; 833 | V0027_FAMILY_SANDSHREW = 27; 834 | V0029_FAMILY_NIDORAN = 29; 835 | V0032_FAMILY_NIDORAN = 32; 836 | V0035_FAMILY_CLEFAIRY = 35; 837 | V0037_FAMILY_VULPIX = 37; 838 | V0039_FAMILY_JIGGLYPUFF = 39; 839 | V0041_FAMILY_ZUBAT = 41; 840 | V0043_FAMILY_ODDISH = 43; 841 | V0046_FAMILY_PARAS = 46; 842 | V0048_FAMILY_VENONAT = 48; 843 | V0050_FAMILY_DIGLETT = 50; 844 | V0052_FAMILY_MEOWTH = 52; 845 | V0054_FAMILY_PSYDUCK = 54; 846 | V0056_FAMILY_MANKEY = 56; 847 | V0058_FAMILY_GROWLITHE = 58; 848 | V0060_FAMILY_POLIWAG = 60; 849 | V0063_FAMILY_ABRA = 63; 850 | V0066_FAMILY_MACHOP = 66; 851 | V0069_FAMILY_BELLSPROUT = 69; 852 | V0072_FAMILY_TENTACOOL = 72; 853 | V0074_FAMILY_GEODUDE = 74; 854 | V0077_FAMILY_PONYTA = 77; 855 | V0079_FAMILY_SLOWPOKE = 79; 856 | V0081_FAMILY_MAGNEMITE = 81; 857 | V0083_FAMILY_FARFETCHD = 83; 858 | V0084_FAMILY_DODUO = 84; 859 | V0086_FAMILY_SEEL = 86; 860 | V0088_FAMILY_GRIMER = 88; 861 | V0090_FAMILY_SHELLDER = 90; 862 | V0092_FAMILY_GASTLY = 92; 863 | V0095_FAMILY_ONIX = 95; 864 | V0096_FAMILY_DROWZEE = 96; 865 | V0098_FAMILY_KRABBY = 98; 866 | V0100_FAMILY_VOLTORB = 100; 867 | V0102_FAMILY_EXEGGCUTE = 102; 868 | V0104_FAMILY_CUBONE = 104; 869 | V0106_FAMILY_HITMONLEE = 106; 870 | V0107_FAMILY_HITMONCHAN = 107; 871 | V0108_FAMILY_LICKITUNG = 108; 872 | V0109_FAMILY_KOFFING = 109; 873 | V0111_FAMILY_RHYHORN = 111; 874 | V0113_FAMILY_CHANSEY = 113; 875 | V0114_FAMILY_TANGELA = 114; 876 | V0115_FAMILY_KANGASKHAN = 115; 877 | V0116_FAMILY_HORSEA = 116; 878 | V0118_FAMILY_GOLDEEN = 118; 879 | V0120_FAMILY_STARYU = 120; 880 | V0122_FAMILY_MR_MIME = 122; 881 | V0123_FAMILY_SCYTHER = 123; 882 | V0124_FAMILY_JYNX = 124; 883 | V0125_FAMILY_ELECTABUZZ = 125; 884 | V0126_FAMILY_MAGMAR = 126; 885 | V0127_FAMILY_PINSIR = 127; 886 | V0128_FAMILY_TAUROS = 128; 887 | V0129_FAMILY_MAGIKARP = 129; 888 | V0131_FAMILY_LAPRAS = 131; 889 | V0132_FAMILY_DITTO = 132; 890 | V0133_FAMILY_EEVEE = 133; 891 | V0137_FAMILY_PORYGON = 137; 892 | V0138_FAMILY_OMANYTE = 138; 893 | V0140_FAMILY_KABUTO = 140; 894 | V0142_FAMILY_AERODACTYL = 142; 895 | V0143_FAMILY_SNORLAX = 143; 896 | V0144_FAMILY_ARTICUNO = 144; 897 | V0145_FAMILY_ZAPDOS = 145; 898 | V0146_FAMILY_MOLTRES = 146; 899 | V0147_FAMILY_DRATINI = 147; 900 | V0150_FAMILY_MEWTWO = 150; 901 | V0151_FAMILY_MEW = 151; 902 | } 903 | 904 | enum HoloItemType { 905 | ITEM_TYPE_NONE = 0; 906 | ITEM_TYPE_POKEBALL = 1; 907 | ITEM_TYPE_POTION = 2; 908 | ITEM_TYPE_REVIVE = 3; 909 | ITEM_TYPE_MAP = 4; 910 | ITEM_TYPE_BATTLE = 5; 911 | ITEM_TYPE_FOOD = 6; 912 | ITEM_TYPE_CAMERA = 7; 913 | ITEM_TYPE_DISK = 8; 914 | ITEM_TYPE_INCUBATOR = 9; 915 | ITEM_TYPE_INCENSE = 10; 916 | ITEM_TYPE_XP_BOOST = 11; 917 | ITEM_TYPE_INVENTORY_UPGRADE = 12; 918 | } 919 | 920 | message WildPokemonProto { 921 | fixed64 EncounterId = 1; 922 | int64 LastModifiedMs = 2; 923 | double Latitude = 3; 924 | double Longitude = 4; 925 | 926 | // S2 geographic area of the spawn point (http://s2map.com/) (https://code.google.com/archive/p/s2-geometry-library/) 927 | string SpawnPointId = 5; 928 | 929 | PokemonProto Pokemon = 7; 930 | 931 | // The amount of time before the pokemon will be gone 932 | int32 TimeTillHiddenMs = 11; 933 | } 934 | 935 | message FortDetailsOutProto { 936 | string Id = 1; 937 | Custom_TeamColor Team = 2; 938 | PokemonProto Pokemon = 3; 939 | string Name = 4; 940 | repeated string ImageUrl = 5; 941 | int32 Fp = 6; 942 | int32 Stamina = 7; 943 | int32 MaxStamina = 8; 944 | Holoholo.Rpc.FortType FortType = 9; 945 | double Latitude = 10; 946 | double Longitude = 11; 947 | string Description = 12; 948 | repeated ClientFortModifierProto Modifier = 13; 949 | } 950 | 951 | message ClientFortModifierProto { 952 | Holoholo.Rpc.Item ModifierType = 1; 953 | int64 ExpirationTimeMs = 2; 954 | string DeployingPlayerCodename = 3; 955 | } 956 | 957 | message FortDetailsProto { 958 | string Id = 1; 959 | double Latitude = 2; 960 | double Longitude = 3; 961 | } 962 | 963 | message FortSearchProto { 964 | string Id = 1; 965 | double PlayerLatDegrees = 2; 966 | double PlayerLngDegrees = 3; 967 | double FortLatDegrees = 4; 968 | double FortLngDegrees = 5; 969 | } 970 | 971 | message AwardItemProto { 972 | Holoholo.Rpc.Item Item = 1; 973 | int32 ItemCount = 2; 974 | } 975 | 976 | message FortSearchOutProto { 977 | Holoholo.Rpc.Types.FortSearchOutProto.Result Result = 1; 978 | repeated AwardItemProto Items = 2; 979 | int32 GemsAwarded = 3; 980 | PokemonProto EggPokemon = 4; 981 | int32 XpAwarded = 5; 982 | int64 CooldownComplete = 6; 983 | int32 ChainHackSequenceNumber = 7; 984 | } 985 | 986 | message GetGymDetailsProto { 987 | string GymId = 1; 988 | double PlayerLatDegrees = 2; 989 | double PlayerLngDegrees = 3; 990 | double GymLatDegrees = 4; 991 | double GymLngDegrees = 5; 992 | } 993 | 994 | message GetGymDetailsOutProto { 995 | enum ResultEnum { 996 | UNSET = 0; 997 | SUCCESS = 1; 998 | ERROR_NOT_IN_RANGE = 2; 999 | } 1000 | 1001 | GymStateProto GymState = 1; 1002 | string Name = 2; 1003 | repeated string Url = 3; 1004 | ResultEnum Result = 4; 1005 | string Description = 5; 1006 | } 1007 | 1008 | enum HoloIapItemCategory { 1009 | IAP_CATEGORY_NONE = 0; 1010 | IAP_CATEGORY_BUNDLE = 1; 1011 | IAP_CATEGORY_ITEMS = 2; 1012 | IAP_CATEGORY_UPGRADES = 3; 1013 | IAP_CATEGORY_POKECOINS = 4; 1014 | } 1015 | 1016 | message IapItemDisplayProto { 1017 | string Sku = 1; 1018 | HoloIapItemCategory Category = 2; 1019 | int32 SortOrder = 3; 1020 | repeated Rpc.Item Items = 4; 1021 | repeated int32 Counts = 5; 1022 | } 1023 | 1024 | message IapSettingsProto { 1025 | int32 DailyBonusCoins = 1; 1026 | repeated int32 DailyDefenderBonusPerPokemon = 2; 1027 | int32 DailyDefenderBonusMaxDefenders = 3; 1028 | repeated string DailyDefenderBonusCurrency = 4; 1029 | int64 MinTimeBetweenClaimsMs = 5; 1030 | bool DailyBonusEnabled = 6; 1031 | bool DailyDefenderBonusEnabled = 7; 1032 | } 1033 | 1034 | message GetInventoryProto { 1035 | int64 TimestampMillis = 1; 1036 | repeated Holoholo.Rpc.Item ItemBeenSeen = 2; 1037 | } 1038 | message GetInventoryOutProto { 1039 | bool Success = 1; 1040 | InventoryDeltaProto InventoryDelta = 2; 1041 | } 1042 | 1043 | message InventoryDeltaProto { 1044 | int64 OriginalTimestamp = 1; 1045 | int64 NewTimestamp = 2; 1046 | repeated InventoryItemProto InventoryItem = 3; 1047 | } 1048 | 1049 | message InventoryItemProto { 1050 | int64 ModifiedTimestamp = 1; 1051 | bytes DeletedItemKey = 2; 1052 | bytes Item = 3; 1053 | } 1054 | 1055 | message RecycleItemProto { 1056 | Holoholo.Rpc.Item Item = 1; 1057 | int32 Count = 2; 1058 | } 1059 | 1060 | message RecycleItemOutProto { 1061 | enum ResultEnum { 1062 | UNSET = 0; 1063 | SUCCESS = 1; 1064 | ERROR_NOT_ENOUGH_COPIES = 2; 1065 | ERROR_CANNOT_RECYCLE_INCUBATORS = 3; 1066 | } 1067 | 1068 | ResultEnum Result = 1; 1069 | int32 NewCount = 2; 1070 | } 1071 | 1072 | message DebugUpdateInventoryProto { 1073 | repeated PokemonProto Pokemon = 1; 1074 | repeated ItemProto Item = 2; 1075 | } 1076 | 1077 | message DebugUpdateInventoryOutProto { 1078 | bool Success = 1; 1079 | } 1080 | 1081 | message HoloInventoryKeyProto { 1082 | uint64 PokemonId = 1; 1083 | Holoholo.Rpc.Item Item = 2; 1084 | int32 PokedexEntryId = 3; 1085 | bool PlayerStats = 4; 1086 | bool PlayerCurrency = 5; 1087 | bool PlayerCamera = 6; 1088 | bool InventoryUpgrades = 7; 1089 | bool AppliedItems = 8; 1090 | bool EggIncubators = 9; 1091 | int32 PokemonFamilyId = 10; 1092 | } 1093 | 1094 | message InventoryProto { 1095 | repeated InventoryItemProto InventoryItem = 1; 1096 | } 1097 | 1098 | message HoloInventoryItemProto { 1099 | PokemonProto Pokemon = 1; 1100 | ItemProto Item = 2; 1101 | PokedexEntryProto PokedexEntry = 3; 1102 | PlayerStatsProto PlayerStats = 4; 1103 | PlayerCurrencyProto PlayerCurrency = 5; 1104 | PlayerCameraProto PlayerCamera = 6; 1105 | InventoryUpgradesProto InventoryUpgrades = 7; 1106 | AppliedItemsProto AppliedItems = 8; 1107 | EggIncubatorsProto EggIncubators = 9; 1108 | PokemonFamilyProto PokemonFamily = 10; 1109 | } 1110 | 1111 | message PokedexEntryProto { 1112 | int32 PokedexEntryNumber = 1; 1113 | int32 TimesEncountered = 2; 1114 | int32 TimesCaptured = 3; 1115 | int32 EvolutionStonePieces = 4; 1116 | int32 EvolutionStones = 5; 1117 | } 1118 | 1119 | message PlayerStatsProto { 1120 | int32 Level = 1; 1121 | int64 Experience = 2; 1122 | int64 PrevLevelExp = 3; 1123 | int64 NextLevelExp = 4; 1124 | float KmWalked = 5; 1125 | int32 NumPokemonEncountered = 6; 1126 | int32 NumUniquePokedexEntries = 7; 1127 | int32 NumPokemonCaptured = 8; 1128 | int32 NumEvolutions = 9; 1129 | int32 PokeStopVisits = 10; 1130 | int32 NumberOfPokeballThrown = 11; 1131 | int32 NumEggsHatched = 12; 1132 | int32 BigMagikarpCaught = 13; 1133 | int32 NumBattleAttackWon = 14; 1134 | int32 NumBattleAttackTotal = 15; 1135 | int32 NumBattleDefendedWon = 16; 1136 | int32 NumBattleTrainingWon = 17; 1137 | int32 NumBattleTrainingTotal = 18; 1138 | int32 PrestigeRaisedTotal = 19; 1139 | int32 PrestigeDroppedTotal = 20; 1140 | int32 NumPokemonDeployed = 21; 1141 | repeated int32 NumPokemonCaughtByType = 22; 1142 | int32 SmallRattataCaught = 23; 1143 | } 1144 | 1145 | message PlayerCurrencyProto { 1146 | int32 Gems = 1; 1147 | } 1148 | 1149 | message PlayerCameraProto { 1150 | bool DefaultCamera = 1; 1151 | } 1152 | 1153 | message InventoryUpgradesProto { 1154 | repeated InventoryUpgradeProto InventoryUpgrade = 1; 1155 | } 1156 | 1157 | message InventoryUpgradeProto { 1158 | Rpc.Item Item = 1; 1159 | InventoryUpgradeType UpgradeType = 2; 1160 | int32 AdditionalStorage = 3; 1161 | } 1162 | 1163 | enum InventoryUpgradeType { 1164 | UPGRADE_UNSET = 0; 1165 | INCREASE_ITEM_STORAGE = 1; 1166 | INCREASE_POKEMON_STORAGE = 2; 1167 | } 1168 | 1169 | message EggIncubatorsProto { 1170 | repeated EggIncubatorProto EggIncubator = 1; 1171 | } 1172 | 1173 | enum EggIncubatorType { 1174 | INCUBATOR_UNSET = 0; 1175 | INCUBATOR_DISTANCE = 1; 1176 | } 1177 | 1178 | message EggIncubatorProto { 1179 | string ItemId = 1; 1180 | Rpc.Item Item = 2; 1181 | EggIncubatorType IncubatorType = 3; 1182 | int32 UsesRemaining = 4; 1183 | int64 PokemonId = 5; 1184 | double StartKmWalked = 6; 1185 | double TargetKmWalked = 7; 1186 | } 1187 | 1188 | message AppliedItemsProto { 1189 | repeated AppliedItemProto Item = 4; 1190 | } 1191 | 1192 | 1193 | message PokemonFamilyProto { 1194 | HoloPokemonFamilyId FamilyId = 1; 1195 | int32 Candy = 2; 1196 | } 1197 | 1198 | enum GetMapObjectsOutProtoStatus { 1199 | UNSET_STATUS = 0; // was originally "UNSET" in the app itself 1200 | SUCCESS = 1; 1201 | LOCATION_UNSET = 2; 1202 | } 1203 | 1204 | // The get map objects request object 1205 | message GetMapObjectsProto { 1206 | repeated uint64 CellId = 1; 1207 | repeated int64 SinceTimeMs = 2; 1208 | double PlayerLat = 3; 1209 | double PlayerLng = 4; 1210 | } 1211 | 1212 | // The get map objects response object 1213 | message GetMapObjectsOutProto { 1214 | repeated ClientMapCellProto MapCell = 1; 1215 | GetMapObjectsOutProtoStatus Status = 2; 1216 | } 1217 | 1218 | // A cell is a geographical "zone" containing objects like pokemon, gyms, and pokestops 1219 | message ClientMapCellProto { 1220 | 1221 | // S2 geographic area that the cell covers (http://s2map.com/) (https://code.google.com/archive/p/s2-geometry-library/) 1222 | uint64 S2CellId = 1; 1223 | 1224 | // current timestamp 1225 | int64 AsOfTimeMs = 2; 1226 | 1227 | repeated PokemonFortProto Fort = 3; 1228 | repeated ClientSpawnPointProto SpawnPoint = 4; 1229 | repeated string DeletedObject = 6; 1230 | bool IsTruncatedList = 7; 1231 | repeated PokemonSummaryFortProto FortSummary = 8; 1232 | repeated ClientSpawnPointProto DecimatedSpawnPoint = 9; 1233 | 1234 | // Pokemon farther away than 2 "steps", but still in the area (3 "steps" away) 1235 | repeated NearbyPokemonProto NearbyPokemon = 11; 1236 | 1237 | // Each pokemon within 2 "steps" or closer will have a WildPokemonProto and MapPokemonProto object 1238 | repeated WildPokemonProto WildPokemon = 5; 1239 | repeated MapPokemonProto CatchablePokemon = 10; 1240 | } 1241 | 1242 | message PokemonSummaryFortProto { 1243 | string FortSummaryId = 1; 1244 | int64 LastModifiedMs = 2; 1245 | double Latitude = 3; 1246 | double Longitude = 4; 1247 | } 1248 | 1249 | message NearbyPokemonProto { 1250 | Custom_PokemonName PokedexNumber = 1; 1251 | float DistanceMeters = 2; 1252 | fixed64 EncounterId = 3; 1253 | } 1254 | 1255 | message ClientSpawnPointProto { 1256 | double Latitude = 2; 1257 | double Longitude = 3; 1258 | } 1259 | 1260 | message MapPokemonProto { 1261 | // S2 geographic area of the spawn point (http://s2map.com/) (https://code.google.com/archive/p/s2-geometry-library/) 1262 | string SpawnPointId = 1; 1263 | 1264 | fixed64 EncounterId = 2; 1265 | Custom_PokemonName PokedexTypeId = 3; 1266 | 1267 | // After this timestamp, the pokemon will be gone 1268 | int64 ExpirationTimeMs = 4; 1269 | 1270 | double Latitude = 5; 1271 | double Longitude = 6; 1272 | } 1273 | -------------------------------------------------------------------------------- /remaining.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package Holoholo.Rpc; 3 | import public "holoholo_shared.proto"; 4 | 5 | message GoogleAuthEventParams { 6 | } 7 | message ChannelAuthEventParams { 8 | } 9 | message LocationUpdateEventParams { 10 | } 11 | message RpcResponseEventParams { 12 | } 13 | message GoogleToken { 14 | } 15 | message AssetDigestRequestProto { 16 | Rpc.Platform Platform = 1; 17 | string DeviceManufacturer = 2; 18 | string DeviceModel = 3; 19 | string Locale = 4; 20 | uint32 AppVersion = 5; 21 | } 22 | message AssetDigestEntryProto { 23 | string AssetId = 1; 24 | string BundleName = 2; 25 | int64 Version = 3; 26 | uint32 Checksum = 4; 27 | int32 Size = 5; 28 | bytes Key = 6; 29 | } 30 | message AssetDigestOutProto { 31 | repeated AssetDigestEntryProto Digest = 1; 32 | uint64 Timestamp = 2; 33 | } 34 | message DownloadUrlRequestProto { 35 | repeated string AssetId = 1; 36 | } 37 | message DownloadUrlEntryProto { 38 | string AssetId = 1; 39 | string Url = 2; 40 | int32 Size = 3; 41 | uint32 Checksum = 4; 42 | } 43 | message DownloadUrlOutProto { 44 | repeated DownloadUrlEntryProto DownloadUrls = 1; 45 | } 46 | message CollectDailyBonusProto { 47 | } 48 | message CollectDailyBonusOutProto { 49 | Rpc.Types.CollectDailyBonusOutProto.Result Result = 1; 50 | } 51 | message CollectDailyDefenderBonusProto { 52 | } 53 | message CollectDailyDefenderBonusOutProto { 54 | Rpc.Types.CollectDailyDefenderBonusOutProto.Result Result = 1; 55 | repeated string CurrencyType = 2; 56 | repeated int32 CurrencyAwarded = 3; 57 | int32 NumDefenders = 4; 58 | } 59 | message EchoProto { 60 | } 61 | message EchoOutProto { 62 | string Context = 1; 63 | } 64 | message GetHatchedEggsProto { 65 | } 66 | message GetHatchedEggsOutProto { 67 | bool Success = 1; 68 | repeated uint64 PokemonId = 2; 69 | repeated int32 ExpAwarded = 3; 70 | repeated int32 CandyAwarded = 4; 71 | repeated int32 StardustAwarded = 5; 72 | } 73 | message EncounterProto { 74 | uint64 EncounterId = 1; 75 | string SpawnpointId = 2; 76 | double PlayerLatDegrees = 3; 77 | double PlayerLngDegrees = 4; 78 | } 79 | message EncounterOutProto { 80 | WildPokemonProto Pokemon = 1; 81 | Rpc.Types.EncounterOutProto.Background Background = 2; 82 | Rpc.Types.EncounterOutProto.Status Status = 3; 83 | CaptureProbabilityProto CaptureProbability = 4; 84 | } 85 | message CatchPokemonProto { 86 | uint64 EncounterId = 1; 87 | int32 Pokeball = 2; 88 | double NormalizedReticleSize = 3; 89 | string SpawnPointGuid = 4; 90 | bool HitPokemon = 5; 91 | double SpinModifier = 6; 92 | double NormalizedHitPosition = 7; 93 | } 94 | message CatchPokemonOutProto { 95 | Rpc.Types.CatchPokemonOutProto.Status Status = 1; 96 | double MissPercent = 2; 97 | uint64 CapturedPokemonId = 3; 98 | CaptureScoreProto Scores = 4; 99 | } 100 | message UseItemCaptureProto { 101 | Rpc.Item Item = 1; 102 | uint64 EncounterId = 2; 103 | string SpawnPointGuid = 3; 104 | } 105 | message UseItemCaptureOutProto { 106 | bool Success = 1; 107 | double ItemCaptureMult = 2; 108 | double ItemFleeMult = 3; 109 | bool StopMovement = 4; 110 | bool StopAttack = 5; 111 | bool TargetMax = 6; 112 | bool TargetSlow = 7; 113 | } 114 | message EncounterTutorialCompleteProto { 115 | int32 PokedexId = 1; 116 | } 117 | message EncounterTutorialCompleteOutProto { 118 | Rpc.Types.EncounterTutorialCompleteOutProto.Result Result = 1; 119 | PokemonProto Pokemon = 2; 120 | CaptureScoreProto Scores = 3; 121 | } 122 | message CaptureProbabilityProto { 123 | repeated Rpc.Item PokeballType = 1; 124 | repeated float CaptureProbability = 2; 125 | double ReticleDifficultyScale = 12; 126 | } 127 | message CaptureScoreProto { 128 | repeated Rpc.HoloActivityType ActivityType = 1; 129 | repeated int32 Exp = 2; 130 | repeated int32 Candy = 3; 131 | repeated int32 Stardust = 4; 132 | } 133 | message UseIncenseActionProto { 134 | Rpc.Item IncenseType = 1; 135 | } 136 | message UseIncenseActionOutProto { 137 | Rpc.Types.UseIncenseActionOutProto.Result Result = 1; 138 | AppliedItemProto AppliedIncense = 2; 139 | } 140 | message GetIncensePokemonProto { 141 | double PlayerLatDegrees = 1; 142 | double PlayerLngDegrees = 2; 143 | } 144 | message GetIncensePokemonOutProto { 145 | Rpc.Types.GetIncensePokemonOutProto.Result Result = 1; 146 | int32 PokemonTypeId = 2; 147 | double Lat = 3; 148 | double Lng = 4; 149 | string EncounterLocation = 5; 150 | uint64 EncounterId = 6; 151 | int64 DisappearTimeMs = 7; 152 | } 153 | message IncenseEncounterProto { 154 | int64 EncounterId = 1; 155 | string EncounterLocation = 2; 156 | } 157 | message IncenseEncounterOutProto { 158 | Rpc.Types.IncenseEncounterOutProto.Result Result = 1; 159 | PokemonProto Pokemon = 2; 160 | CaptureProbabilityProto CaptureProbability = 3; 161 | } 162 | message DiskEncounterProto { 163 | int64 EncounterId = 1; 164 | string FortId = 2; 165 | double PlayerLatDegrees = 3; 166 | double PlayerLngDegrees = 4; 167 | } 168 | message DiskEncounterOutProto { 169 | Rpc.Types.DiskEncounterOutProto.Result Result = 1; 170 | PokemonProto Pokemon = 2; 171 | CaptureProbabilityProto CaptureProbability = 3; 172 | } 173 | message EvolvePokemonProto { 174 | uint64 PokemonId = 1; 175 | } 176 | message EvolvePokemonOutProto { 177 | Rpc.Types.EvolvePokemonOutProto.Result Result = 1; 178 | PokemonProto EvolvedPokemon = 2; 179 | int32 ExpAwarded = 3; 180 | int32 CandyAwarded = 4; 181 | } 182 | message FortDeployProto { 183 | string FortId = 1; 184 | uint64 PokemonId = 2; 185 | double PlayerLatDegrees = 3; 186 | double PlayerLngDegrees = 4; 187 | } 188 | message FortDeployOutProto { 189 | Rpc.Types.FortDeployOutProto.Result Result = 1; 190 | FortDetailsOutProto FortDetailsOutProto = 2; 191 | PokemonProto EggPokemon = 3; 192 | GymStateProto GymStateProto = 4; 193 | } 194 | message FortRecallProto { 195 | string FortId = 1; 196 | uint64 PokemonId = 2; 197 | double PlayerLatDegrees = 3; 198 | double PlayerLngDegrees = 4; 199 | } 200 | message FortRecallOutProto { 201 | Rpc.Types.FortRecallOutProto.Result Result = 1; 202 | FortDetailsOutProto FortDetailsOutProto = 2; 203 | } 204 | message AddFortModifierProto { 205 | Rpc.Item ModifierType = 1; 206 | string FortId = 2; 207 | double PlayerLatDegrees = 3; 208 | double PlayerLngDegrees = 4; 209 | } 210 | message AddFortModifierOutProto { 211 | Rpc.Types.AddFortModifierOutProto.Result Result = 1; 212 | FortDetailsOutProto FortDetailsOutProto = 2; 213 | } 214 | message PokemonCameraAttributesProto { 215 | float DiskRadiusM = 1; 216 | float CylRadiusM = 2; 217 | float CylHeightM = 3; 218 | float CylGroundM = 4; 219 | float ShoulderModeScale = 5; 220 | } 221 | message PokemonEncounterAttributesProto { 222 | float BaseCaptureRate = 1; 223 | float BaseFleeRate = 2; 224 | float CollisionRadiusM = 3; 225 | float CollisionHeightM = 4; 226 | float CollisionHeadRadiusM = 5; 227 | Rpc.HoloPokemonMovementType MovementType = 6; 228 | float MovementTimerS = 7; 229 | float JumpTimeS = 8; 230 | float AttackTimerS = 9; 231 | } 232 | message PokemonStatsAttributesProto { 233 | int32 BaseStamina = 1; 234 | int32 BaseAttack = 2; 235 | int32 BaseDefense = 3; 236 | int32 DodgeEnergyDelta = 8; 237 | } 238 | message PokemonSettingsProto { 239 | Rpc.HoloPokemonId UniqueId = 1; 240 | float ModelScale = 3; 241 | Rpc.HoloPokemonType Type1 = 4; 242 | Rpc.HoloPokemonType Type2 = 5; 243 | PokemonCameraAttributesProto Camera = 6; 244 | PokemonEncounterAttributesProto Encounter = 7; 245 | PokemonStatsAttributesProto Stats = 8; 246 | repeated Rpc.HoloPokemonMove QuickMoves = 9; 247 | repeated Rpc.HoloPokemonMove CinematicMoves = 10; 248 | repeated float AnimTime = 11; 249 | repeated Rpc.HoloPokemonId Evolution = 12; 250 | int32 EvolutionPips = 13; 251 | Rpc.HoloPokemonClass PokemonClass = 14; 252 | float PokedexHeightM = 15; 253 | float PokedexWeightKg = 16; 254 | Rpc.HoloPokemonId ParentId = 17; 255 | float HeightStdDev = 18; 256 | float WeightStdDev = 19; 257 | float KmDistanceToHatch = 20; 258 | Rpc.HoloPokemonFamilyId FamilyId = 21; 259 | int32 CandyToEvolve = 22; 260 | } 261 | message PokeBallAttributesProto { 262 | Rpc.HoloItemEffect ItemEffect = 1; 263 | float CaptureMulti = 2; 264 | float CaptureMultiEffect = 3; 265 | float ItemEffectMod = 4; 266 | } 267 | message PotionAttributesProto { 268 | float StaPercent = 1; 269 | int32 StaAmount = 2; 270 | } 271 | message ReviveAttributesProto { 272 | float StaPercent = 1; 273 | } 274 | message BattleAttributesProto { 275 | float StaPercent = 1; 276 | float AtkPercent = 2; 277 | float DefPercent = 3; 278 | float DurationS = 4; 279 | } 280 | message FoodAttributesProto { 281 | repeated Rpc.HoloItemEffect ItemEffect = 1; 282 | repeated float ItemEffectPercent = 2; 283 | float GrowthPercent = 3; 284 | } 285 | message InventoryUpgradeAttributesProto { 286 | int32 AdditionalStorage = 1; 287 | Rpc.InventoryUpgradeType UpgradeType = 2; 288 | } 289 | message ExperienceBoostAttributesProto { 290 | float XpMultiplier = 1; 291 | int32 BoostDurationMs = 2; 292 | } 293 | message EggIncubatorAttributesProto { 294 | Rpc.EggIncubatorType IncubatorType = 1; 295 | int32 Uses = 2; 296 | float DistanceMultiplier = 3; 297 | } 298 | message IncenseAttributesProto { 299 | int32 IncenseLifetimeSeconds = 1; 300 | repeated Rpc.HoloPokemonType PokemonType = 2; 301 | float PokemonIncenseTypeProbability = 3; 302 | int32 StandingTimeBetweenEncountersSec = 4; 303 | int32 MovingTimeBetweenEncounterSec = 5; 304 | int32 DistanceRequiredForShorterIntervalMeters = 6; 305 | int32 PokemonAttractedLengthSec = 7; 306 | } 307 | message FortModifierAttributesProto { 308 | int32 ModifierLifetimeSeconds = 1; 309 | int32 TroyDiskNumPokemonSpawned = 2; 310 | } 311 | message ItemSettingsProto { 312 | Rpc.Item UniqueId = 1; 313 | Rpc.HoloItemType ItemType = 2; 314 | Rpc.HoloItemCategory Category = 3; 315 | float DropFreq = 4; 316 | int32 DropTrainerLevel = 5; 317 | PokeBallAttributesProto Pokeball = 6; 318 | PotionAttributesProto Potion = 7; 319 | ReviveAttributesProto Revive = 8; 320 | BattleAttributesProto Battle = 9; 321 | FoodAttributesProto Food = 10; 322 | InventoryUpgradeAttributesProto InventoryUpgrade = 11; 323 | ExperienceBoostAttributesProto XpBoost = 12; 324 | IncenseAttributesProto Incense = 13; 325 | EggIncubatorAttributesProto EggIncubator = 14; 326 | FortModifierAttributesProto FortModifier = 15; 327 | } 328 | message MoveSettingsProto { 329 | Rpc.HoloPokemonMove UniqueId = 1; 330 | int32 AnimationId = 2; 331 | Rpc.HoloPokemonType Type = 3; 332 | float Power = 4; 333 | float AccuracyChance = 5; 334 | float CriticalChance = 6; 335 | float HealScalar = 7; 336 | float StaminaLossScalar = 8; 337 | int32 TrainerLevelMin = 9; 338 | int32 TrainerLevelMax = 10; 339 | string VfxName = 11; 340 | int32 DurationMs = 12; 341 | int32 DamageWindowStartMs = 13; 342 | int32 DamageWindowEndMs = 14; 343 | int32 EnergyDelta = 15; 344 | } 345 | message MoveSequenceSettingsProto { 346 | repeated string Sequence = 1; 347 | } 348 | message TypeEffectiveSettingsProto { 349 | Rpc.HoloPokemonType AttackType = 2; 350 | repeated float AttackScalar = 1; 351 | } 352 | message BadgeSettingsProto { 353 | Rpc.HoloBadgeType BadgeType = 1; 354 | int32 BadgeRanks = 2; 355 | repeated int32 Targets = 3; 356 | } 357 | message CameraSettingsProto { 358 | string NextCamera = 1; 359 | repeated Rpc.CameraInterpolation Interpolation = 2; 360 | repeated Rpc.CameraTarget TargetType = 3; 361 | repeated float EaseInSpeed = 4; 362 | repeated float EaseOutSpeed = 5; 363 | repeated float DurationS = 6; 364 | repeated float WaitS = 7; 365 | repeated float TransitionS = 8; 366 | repeated float AngleDeg = 9; 367 | repeated float AngleOffsetDeg = 10; 368 | repeated float PitchDeg = 11; 369 | repeated float PitchOffsetDeg = 12; 370 | repeated float RollDeg = 13; 371 | repeated float DistanceM = 14; 372 | repeated float HeightPercent = 15; 373 | repeated float VertCtrRatio = 16; 374 | } 375 | message PlayerLevelSettingsProto { 376 | repeated int32 RankNum = 1; 377 | repeated int32 RequiredExp = 2; 378 | repeated float CpMultiplier = 3; 379 | int32 MaxEggPlayerLevel = 4; 380 | int32 MaxEncounterPlayerLevel = 5; 381 | } 382 | message GymLevelSettingsProto { 383 | repeated int32 RequiredExp = 1; 384 | repeated int32 LeaderSlots = 2; 385 | repeated int32 TrainerSlots = 3; 386 | repeated int32 SearchRollBonus = 4; 387 | } 388 | message GymBattleSettingsProto { 389 | float EnergyPerSec = 1; 390 | float DodgeEnergyCost = 2; 391 | float RetargetSeconds = 3; 392 | float EnemyAttackInterval = 4; 393 | float AttackServerInterval = 5; 394 | float RoundDurationSeconds = 6; 395 | float BonusTimePerAllySeconds = 7; 396 | int32 MaximumAttackersPerBattle = 8; 397 | float SameTypeAttackBonusMultiplier = 9; 398 | int32 MaximumEnergy = 10; 399 | float EnergyDeltaPerHealthLost = 11; 400 | int32 DodgeDurationMs = 12; 401 | int32 MinimumPlayerLevel = 13; 402 | int32 SwapDurationMs = 14; 403 | } 404 | message EncounterSettingsProto { 405 | float SpinBonusThreshold = 1; 406 | float ExcellentThrowThreshold = 2; 407 | float GreatThrowThreshold = 3; 408 | float NiceThrowThreshold = 4; 409 | int32 MilestoneThreshold = 5; 410 | } 411 | message PokemonUpgradeSettingsProto { 412 | int32 UpgradesPerLevel = 1; 413 | int32 AllowedLevelsAbovePlayer = 2; 414 | repeated int32 CandyCost = 3; 415 | repeated int32 StardustCost = 4; 416 | } 417 | message EquippedBadgeSettingsProto { 418 | int64 EquipBadgeCooldownMs = 1; 419 | repeated float CatchProbabilityBonus = 2; 420 | repeated float FleeProbabilityBonus = 3; 421 | } 422 | message GameMasterClientTemplateProto { 423 | string TemplateId = 1; 424 | PokemonSettingsProto Pokemon = 2; 425 | ItemSettingsProto Item = 3; 426 | MoveSettingsProto Move = 4; 427 | MoveSequenceSettingsProto MoveSequence = 5; 428 | TypeEffectiveSettingsProto TypeEffective = 8; 429 | BadgeSettingsProto Badge = 10; 430 | CameraSettingsProto Camera = 11; 431 | PlayerLevelSettingsProto PlayerLevel = 12; 432 | GymLevelSettingsProto GymLevel = 13; 433 | GymBattleSettingsProto BattleSettings = 14; 434 | EncounterSettingsProto EncounterSettings = 15; 435 | IapItemDisplayProto IapItemDisplay = 16; 436 | IapSettingsProto IapSettings = 17; 437 | PokemonUpgradeSettingsProto PokemonUpgrades = 18; 438 | EquippedBadgeSettingsProto EquippedBadges = 19; 439 | } 440 | message GetGameMasterClientTemplatesProto { 441 | } 442 | message GetGameMasterClientTemplatesOutProto { 443 | Rpc.Types.GetGameMasterClientTemplatesOutProto.Result Result = 1; 444 | repeated GameMasterClientTemplateProto Items = 2; 445 | uint64 Timestamp = 3; 446 | } 447 | message GetRemoteConfigVersionsProto { 448 | Rpc.Platform Platform = 1; 449 | string DeviceManufacturer = 2; 450 | string DeviceModel = 3; 451 | string Locale = 4; 452 | uint32 AppVersion = 5; 453 | } 454 | message GetRemoteConfigVersionsOutProto { 455 | Rpc.Types.GetRemoteConfigVersionsOutProto.Result Result = 1; 456 | uint64 GameMasterTimestamp = 2; 457 | uint64 AssetDigestTimestamp = 3; 458 | } 459 | 460 | 461 | message ActionLogEntry { 462 | int64 TimestampMs = 1; 463 | bool Sfida = 2; 464 | oneof Action { 465 | CatchPokemonLogEntry CatchPokemon = 3; 466 | FortSearchLogEntry FortSearch = 4; 467 | } 468 | } 469 | message CatchPokemonLogEntry { 470 | Rpc.Types.CatchPokemonLogEntry.Result Result = 1; 471 | int32 PokedexNumber = 2; 472 | int32 CombatPoints = 3; 473 | uint64 PokemonId = 4; 474 | } 475 | message FortSearchLogEntry { 476 | Rpc.Types.FortSearchLogEntry.Result Result = 1; 477 | string FortId = 2; 478 | repeated ItemProto Items = 3; 479 | int32 Eggs = 4; 480 | } 481 | 482 | message PlayerBadgeProto { 483 | Rpc.HoloBadgeType BadgeType = 1; 484 | int32 Rank = 2; 485 | int32 StartValue = 3; 486 | int32 EndValue = 4; 487 | double CurrentValue = 5; 488 | } 489 | message PlayerProfileProto { 490 | string PlayerName = 1; 491 | } 492 | message PlayerProfileOutProto { 493 | Rpc.Types.PlayerProfileOutProto.Result Result = 1; 494 | int64 StartTime = 2; 495 | repeated PlayerBadgeProto Badges = 3; 496 | } 497 | message LevelUpRewardsProto { 498 | int32 Level = 1; 499 | } 500 | message LevelUpRewardsOutProto { 501 | Rpc.Types.LevelUpRewardsOutProto.Result Result = 1; 502 | repeated AwardItemProto Items = 2; 503 | repeated Rpc.Item ItemsUnlocked = 4; 504 | } 505 | 506 | message ClientPlayerProto { 507 | int64 CreationTimeMs = 1; 508 | string Name = 2; 509 | int32 Team = 5; 510 | repeated Rpc.TutorialCompletion TutorialComplete = 7; 511 | PlayerAvatarProto PlayerAvatarProto = 8; 512 | int32 MaxPokemonStorage = 9; 513 | int32 MaxItemStorage = 10; 514 | DailyBonusProto DailyBonusProto = 11; 515 | EquippedBadgeProto EquippedBadgeProto = 12; 516 | ContactSettingsProto ContactSettingsProto = 13; 517 | repeated CurrencyQuantityProto CurrencyBalance = 14; 518 | } 519 | message CurrencyQuantityProto { 520 | string CurrencyType = 1; 521 | int32 Quantity = 2; 522 | } 523 | message ContactSettingsProto { 524 | bool SendMarketingEmails = 1; 525 | bool SendPushNotifications = 2; 526 | } 527 | message DailyBonusProto { 528 | int64 NextCollectTimestampMs = 1; 529 | int64 NextDefenderBonusCollectTimestampMs = 2; 530 | } 531 | message EquippedBadgeProto { 532 | Rpc.HoloBadgeType EquippedBadge = 1; 533 | int32 Level = 2; 534 | int64 NextEquipChangeAllowedTimestampMs = 3; 535 | } 536 | message GetPlayerProto { 537 | } 538 | message GetPlayerOutProto { 539 | bool Success = 1; 540 | ClientPlayerProto Player = 2; 541 | } 542 | message PlayerUpdateProto { 543 | double Lat = 1; 544 | double Lng = 2; 545 | } 546 | message PlayerUpdateOutProto { 547 | repeated WildPokemonProto WildPokemon = 1; 548 | repeated PokemonFortProto Fort = 2; 549 | int32 FortsNearby = 3; 550 | } 551 | message SetFavoritePokemonProto { 552 | int64 PokemonId = 1; 553 | bool IsFavorite = 2; 554 | } 555 | message SetFavoritePokemonOutProto { 556 | Rpc.Types.SetFavoritePokemonOutProto.Result Result = 1; 557 | } 558 | message ReleasePokemonProto { 559 | uint64 PokemonId = 1; 560 | repeated uint64 PokemonIds = 2; 561 | } 562 | message ReleasePokemonOutProto { 563 | Rpc.Types.ReleasePokemonOutProto.Status Status = 1; 564 | int32 CandyAwarded = 2; 565 | } 566 | message DebugDeletePlayerProto { 567 | } 568 | message DebugDeletePlayerOutProto { 569 | bool Success = 1; 570 | } 571 | message GetSuggestedCodenamesRequestProto { 572 | } 573 | message GetSuggestedCodenamesResponseProto { 574 | repeated string Codename = 1; 575 | bool Success = 2; 576 | } 577 | message CheckCodenameAvailableRequestProto { 578 | string Codename = 1; 579 | } 580 | message ClaimCodenameRequestProto { 581 | string Codename = 1; 582 | } 583 | message CodenameResultProto { 584 | string Codename = 1; 585 | string UserMessage = 2; 586 | bool IsAssignable = 3; 587 | Rpc.Types.CodenameResultProto.Status Status = 4; 588 | } 589 | message SetAvatarProto { 590 | PlayerAvatarProto PlayerAvatarProto = 2; 591 | } 592 | message SetAvatarOutProto { 593 | Rpc.Types.SetAvatarOutProto.Status Status = 1; 594 | ClientPlayerProto Player = 2; 595 | } 596 | message SetContactSettingsProto { 597 | ContactSettingsProto ContactSettingsProto = 1; 598 | } 599 | message SetContactSettingsOutProto { 600 | Rpc.Types.SetContactSettingsOutProto.Status Status = 1; 601 | ClientPlayerProto Player = 2; 602 | } 603 | message SetPlayerTeamProto { 604 | Rpc.Team Team = 1; 605 | } 606 | message SetPlayerTeamOutProto { 607 | Rpc.Types.SetPlayerTeamOutProto.Status Status = 1; 608 | ClientPlayerProto Player = 2; 609 | } 610 | message MarkTutorialCompleteProto { 611 | repeated Rpc.TutorialCompletion TutorialComplete = 1; 612 | bool SendMarketingEmails = 2; 613 | bool SendPushNotifications = 3; 614 | } 615 | message MarkTutorialCompleteOutProto { 616 | bool Success = 1; 617 | ClientPlayerProto Player = 2; 618 | } 619 | message CheckAwardedBadgesProto { 620 | } 621 | message CheckAwardedBadgesOutProto { 622 | bool Success = 1; 623 | repeated Rpc.HoloBadgeType AwardedBadges = 2; 624 | repeated int32 AwardedBadgeLevels = 3; 625 | } 626 | message PtcToken { 627 | string Token = 1; 628 | int32 Expiration = 2; 629 | } 630 | message EquipBadgeProto { 631 | Rpc.HoloBadgeType Badge = 1; 632 | } 633 | message EquipBadgeOutProto { 634 | Rpc.Types.EquipBadgeOutProto.Result Result = 1; 635 | EquippedBadgeProto Equipped = 2; 636 | } 637 | message GetActionLogRequest { 638 | } 639 | message GetActionLogResponse { 640 | Rpc.Types.GetActionLogResponse.Result Result = 1; 641 | repeated ActionLogEntry Log = 2; 642 | } 643 | 644 | //These are new types to conform to the protocol more consistantly 645 | message SfidaActionLogProto{ 646 | } 647 | message SfidaActionLogOutProto{ 648 | Rpc.Types.GetActionLogResponse.Result Result = 1; 649 | repeated ActionLogEntry Log = 2; 650 | } 651 | 652 | 653 | message DownloadSettingsActionProto { 654 | string Sha1 = 1; 655 | } 656 | message DownloadSettingsResponseProto { 657 | string Error = 1; 658 | string Sha1 = 2; 659 | bytes Values = 3; 660 | } 661 | message TradingSearchProto { 662 | double Lat = 1; 663 | double Lng = 2; 664 | } 665 | message TradingSearchOutProto { 666 | Rpc.Types.TradingSearchOutProto.Result Result = 1; 667 | repeated string PlayerNames = 2; 668 | } 669 | message TradingOfferProto { 670 | string TradingPlayer = 1; 671 | uint64 PokemonId = 2; 672 | } 673 | message TradingOfferOutProto { 674 | Rpc.Types.TradingOfferOutProto.Result Result = 1; 675 | uint64 TradeId = 2; 676 | } 677 | message PollForTradeResponseProto { 678 | uint64 TradeId = 1; 679 | uint64 PokemonId = 2; 680 | bool RequestCancel = 3; 681 | } 682 | message PollForTradeResponseOutProto { 683 | Rpc.Types.PollForTradeResponseOutProto.Result Result = 1; 684 | PokemonProto ReturnPokemon = 2; 685 | } 686 | message TradingResultProto { 687 | uint64 TradeId = 1; 688 | bool PlayerAccept = 2; 689 | } 690 | message TradingResultOutProto { 691 | Rpc.Types.TradingResultOutProto.Result Result = 1; 692 | } 693 | message UpgradePokemonProto { 694 | uint64 PokemonId = 1; 695 | } 696 | message UpgradePokemonOutProto { 697 | Rpc.Types.UpgradePokemonOutProto.Result Result = 1; 698 | PokemonProto UpgradedPokemon = 2; 699 | } 700 | message UseItemPotionProto { 701 | Rpc.Item Item = 1; 702 | uint64 PokemonId = 2; 703 | } 704 | message UseItemPotionOutProto { 705 | Rpc.Types.UseItemPotionOutProto.Result Result = 1; 706 | int32 Stamina = 2; 707 | } 708 | message UseItemReviveProto { 709 | Rpc.Item Item = 1; 710 | uint64 PokemonId = 2; 711 | } 712 | message UseItemReviveOutProto { 713 | Rpc.Types.UseItemReviveOutProto.Result Result = 1; 714 | int32 Stamina = 2; 715 | } 716 | message UseItemGymProto { 717 | Rpc.Item Item = 1; 718 | string GymId = 2; 719 | double PlayerLatDegrees = 3; 720 | double PlayerLngDegrees = 4; 721 | } 722 | message UseItemGymOutProto { 723 | Rpc.Types.UseItemGymOutProto.Result Result = 1; 724 | int64 UpdatedGp = 2; 725 | } 726 | message UseItemXpBoostProto { 727 | Rpc.Item Item = 1; 728 | } 729 | message UseItemXpBoostOutProto { 730 | Rpc.Types.UseItemXpBoostOutProto.Result Result = 1; 731 | AppliedItemsProto AppliedItems = 2; 732 | } 733 | message UseItemEggIncubatorProto { 734 | string ItemId = 1; 735 | int64 PokemondId = 2; 736 | } 737 | message UseItemEggIncubatorOutProto { 738 | Rpc.Types.UseItemEggIncubatorOutProto.Result Result = 1; 739 | EggIncubatorProto EggIncubator = 2; 740 | } 741 | 742 | message Niantic { 743 | message Holoholo { 744 | message Encounter { 745 | enum EncounterResult { 746 | CapturedPokemon = 0; 747 | UserFled = 1; 748 | PokemonFled = 2; 749 | Error = 3; 750 | } 751 | } 752 | message Gym { 753 | enum ApproachMode { 754 | BATTLE_PREP = 0; 755 | DEPLOY = 1; 756 | FRIENDLY_CHOICE = 2; 757 | PICK_TEAM = 3; 758 | } 759 | message GymMinimapDot { 760 | enum DotState { 761 | EMPTY = 0; 762 | FULL = 1; 763 | LEADER = 2; 764 | } 765 | } 766 | message AttackAffector { 767 | enum FxPriority { 768 | Neutral = 0; 769 | Tap = 1; 770 | Sequence = 2; 771 | } 772 | } 773 | } 774 | message Map { 775 | enum PokemonEncounterResponse { 776 | Success = 0; 777 | Failure = 1; 778 | } 779 | message MapSpawnPoint { 780 | enum VisibilityType { 781 | Low = 0; 782 | High = 1; 783 | } 784 | } 785 | message MapGestureHandler { 786 | enum PanGestureType { 787 | Unknown = 0; 788 | Pan = 1; 789 | DragZoom = 2; 790 | Tilt = 3; 791 | Rotation = 4; 792 | } 793 | } 794 | enum DayPeriod { 795 | Day = 0; 796 | Night = 1; 797 | } 798 | } 799 | message Items { 800 | enum IncubationResult { 801 | SUCCESS = 0; 802 | FAILURE = 1; 803 | } 804 | enum BuffSelectionState { 805 | Canceled = 0; 806 | Selected = 1; 807 | } 808 | } 809 | 810 | message UserTasks { 811 | enum TaskCompletionResult { 812 | Success = 0; 813 | Failed = 1; 814 | } 815 | } 816 | message DeferredInvoke { 817 | enum DeferMode { 818 | Seconds = 0; 819 | EndOfFrame = 1; 820 | } 821 | } 822 | message Assets { 823 | enum AssetRequestPriority { 824 | Preload = 0; 825 | Normal = 1; 826 | Immediate = 2; 827 | } 828 | } 829 | message Sfida { 830 | message SfidaService { 831 | enum State { 832 | NO_CONNECTION = 0; 833 | IDLE = 1; 834 | FINDING_NOTIFY_POKESTOP = 2; 835 | NOTIFYING_POKESTOP = 3; 836 | SEARCH_RESULT = 4; 837 | FINDING_NOTIFY_POKEMON = 5; 838 | NOTIFYING_POKEMON = 6; 839 | ENCOUNTER = 7; 840 | CATCH = 8; 841 | CATCH_RESULT = 9; 842 | DOWSER = 10; 843 | ERROR = 11; 844 | } 845 | } 846 | } 847 | } 848 | } 849 | enum UpdateType { 850 | ADD = 0; 851 | MODIFY = 1; 852 | REMOVE = 2; 853 | PREDICTED_MODIFY = 3; 854 | PREDICTED_REMOVE = 4; 855 | ROLLED_BACK_MODIFY = 5; 856 | ROLLED_BACK_REMOVE = 6; 857 | } 858 | enum EnumScaleMode { 859 | BRB = 0; 860 | Maya = 1; 861 | MayaWCurve = 2; 862 | } 863 | enum FovSide { 864 | UP = 0; 865 | DOWN = 1; 866 | LEFT = 2; 867 | RIGHT = 3; 868 | NUM_SIDES = 4; 869 | } 870 | enum RemoteConfigurationType { 871 | ASSET_DIGEST = 0; 872 | GAME_MASTER = 1; 873 | } 874 | enum Command { 875 | VFX = 0; 876 | F2FVFX = 1; 877 | SFX = 2; 878 | CAM = 3; 879 | ANIM = 4; 880 | WAIT = 5; 881 | SYS = 6; 882 | SHAKE = 7; 883 | SCALE = 8; 884 | SINK = 9; 885 | EVENT = 10; 886 | MODE = 11; 887 | HIDE = 12; 888 | UNHIDE = 13; 889 | SPIN = 14; 890 | SQUISH = 15; 891 | BACKGROUND = 16; 892 | RESET_BACKGROUND = 17; 893 | SILHOUETTE = 18; 894 | RESET_SILHOUETTE = 19; 895 | HIDE_OTHER = 20; 896 | UNHIDE_OTHER = 21; 897 | DSCVFX = 22; 898 | } 899 | enum TargetType { 900 | MAIN_CAMERA = 0; 901 | SPECIFIED_OBJECT = 1; 902 | } 903 | enum Effect { 904 | NO_DAMAGE = 0; 905 | REDUCED_DAMAGE = 1; 906 | NORMAL_DAMAGE = 2; 907 | INCREASED_DAMAGE = 3; 908 | } 909 | enum PokemonCreateContext { 910 | CREATE_CONTEXT_WILD = 0; 911 | CREATE_CONTEXT_EGG = 1; 912 | CREATE_CONTEXT_EVOLVE = 2; 913 | } 914 | enum PlayerAvatarType { 915 | PLAYER_AVATAR_UNSET = 0; 916 | PLAYER_AVATAR_MALE = 1; 917 | PLAYER_AVATAR_FEMALE = 2; 918 | } 919 | enum Team { 920 | UNSET = 0; 921 | TEAM_BLUE = 1; 922 | TEAM_RED = 2; 923 | TEAM_YELLOW = 3; 924 | } 925 | enum HoloPokemonType { 926 | POKEMON_TYPE_NONE = 0; 927 | POKEMON_TYPE_NORMAL = 1; 928 | POKEMON_TYPE_FIGHTING = 2; 929 | POKEMON_TYPE_FLYING = 3; 930 | POKEMON_TYPE_POISON = 4; 931 | POKEMON_TYPE_GROUND = 5; 932 | POKEMON_TYPE_ROCK = 6; 933 | POKEMON_TYPE_BUG = 7; 934 | POKEMON_TYPE_GHOST = 8; 935 | POKEMON_TYPE_STEEL = 9; 936 | POKEMON_TYPE_FIRE = 10; 937 | POKEMON_TYPE_WATER = 11; 938 | POKEMON_TYPE_GRASS = 12; 939 | POKEMON_TYPE_ELECTRIC = 13; 940 | POKEMON_TYPE_PSYCHIC = 14; 941 | POKEMON_TYPE_ICE = 15; 942 | POKEMON_TYPE_DRAGON = 16; 943 | POKEMON_TYPE_DARK = 17; 944 | POKEMON_TYPE_FAIRY = 18; 945 | } 946 | enum HoloPokemonClass { 947 | POKEMON_CLASS_NORMAL = 0; 948 | POKEMON_CLASS_LEGENDARY = 1; 949 | POKEMON_CLASS_MYTHIC = 2; 950 | } 951 | enum HoloPokemonNature { 952 | NATURE_UNKNOWN = 0; 953 | V0001_POKEMON_NATURE_STOIC = 1; 954 | V0002_POKEMON_NATURE_ASSASSIN = 2; 955 | V0003_POKEMON_NATURE_GUARDIAN = 3; 956 | V0004_POKEMON_NATURE_RAIDER = 4; 957 | V0005_POKEMON_NATURE_PROTECTOR = 5; 958 | V0006_POKEMON_NATURE_SENTRY = 6; 959 | V0007_POKEMON_NATURE_CHAMPION = 7; 960 | } 961 | enum HoloPokemonMovementType { 962 | POKEMON_ENC_MOVEMENT_STATIC = 0; 963 | POKEMON_ENC_MOVEMENT_JUMP = 1; 964 | POKEMON_ENC_MOVEMENT_VERTICAL = 2; 965 | POKEMON_ENC_MOVEMENT_PSYCHIC = 3; 966 | POKEMON_ENC_MOVEMENT_ELECTRIC = 4; 967 | POKEMON_ENC_MOVEMENT_FLYING = 5; 968 | POKEMON_ENC_MOVEMENT_HOVERING = 6; 969 | } 970 | 971 | enum HoloItemCategory { 972 | ITEM_CATEGORY_NONE = 0; 973 | ITEM_CATEGORY_POKEBALL = 1; 974 | ITEM_CATEGORY_FOOD = 2; 975 | ITEM_CATEGORY_MEDICINE = 3; 976 | ITEM_CATEGORY_BOOST = 4; 977 | ITEM_CATEGORY_UTILITES = 5; 978 | ITEM_CATEGORY_CAMERA = 6; 979 | ITEM_CATEGORY_DISK = 7; 980 | ITEM_CATEGORY_INCUBATOR = 8; 981 | ITEM_CATEGORY_INCENSE = 9; 982 | ITEM_CATEGORY_XP_BOOST = 10; 983 | ITEM_CATEGORY_INVENTORY_UPGRADE = 11; 984 | } 985 | enum HoloItemEffect { 986 | ITEM_EFFECT_NONE = 0; 987 | ITEM_EFFECT_CAP_NO_FLEE = 1000; 988 | ITEM_EFFECT_CAP_NO_MOVEMENT = 1002; 989 | ITEM_EFFECT_CAP_NO_THREAT = 1003; 990 | ITEM_EFFECT_CAP_TARGET_MAX = 1004; 991 | ITEM_EFFECT_CAP_TARGET_SLOW = 1005; 992 | ITEM_EFFECT_CAP_CHANCE_NIGHT = 1006; 993 | ITEM_EFFECT_CAP_CHANCE_TRAINER = 1007; 994 | ITEM_EFFECT_CAP_CHANCE_FIRST_THROW = 1008; 995 | ITEM_EFFECT_CAP_CHANCE_LEGEND = 1009; 996 | ITEM_EFFECT_CAP_CHANCE_HEAVY = 1010; 997 | ITEM_EFFECT_CAP_CHANCE_REPEAT = 1011; 998 | ITEM_EFFECT_CAP_CHANCE_MULTI_THROW = 1012; 999 | ITEM_EFFECT_CAP_CHANCE_ALWAYS = 1013; 1000 | ITEM_EFFECT_CAP_CHANCE_SINGLE_THROW = 1014; 1001 | } 1002 | enum HoloActivityType { 1003 | ACTIVITY_UNKNOWN = 0; 1004 | ACTIVITY_CATCH_POKEMON = 1; 1005 | ACTIVITY_CATCH_LEGEND_POKEMON = 2; 1006 | ACTIVITY_FLEE_POKEMON = 3; 1007 | ACTIVITY_DEFEAT_FORT = 4; 1008 | ACTIVITY_EVOLVE_POKEMON = 5; 1009 | ACTIVITY_HATCH_EGG = 6; 1010 | ACTIVITY_WALK_KM = 7; 1011 | ACTIVITY_POKEDEX_ENTRY_NEW = 8; 1012 | ACTIVITY_CATCH_FIRST_THROW = 9; 1013 | ACTIVITY_CATCH_NICE_THROW = 10; 1014 | ACTIVITY_CATCH_GREAT_THROW = 11; 1015 | ACTIVITY_CATCH_EXCELLENT_THROW = 12; 1016 | ACTIVITY_CATCH_CURVEBALL = 13; 1017 | ACTIVITY_CATCH_FIRST_CATCH_OF_DAY = 14; 1018 | ACTIVITY_CATCH_MILESTONE = 15; 1019 | ACTIVITY_TRAIN_POKEMON = 16; 1020 | ACTIVITY_SEARCH_FORT = 17; 1021 | ACTIVITY_RELEASE_POKEMON = 18; 1022 | ACTIVITY_HATCH_EGG_SMALL_BONUS = 19; 1023 | ACTIVITY_HATCH_EGG_MEDIUM_BONUS = 20; 1024 | ACTIVITY_HATCH_EGG_LARGE_BONUS = 21; 1025 | ACTIVITY_DEFEAT_GYM_DEFENDER = 22; 1026 | ACTIVITY_DEFEAT_GYM_LEADER = 23; 1027 | } 1028 | enum HoloBadgeType { 1029 | BADGE_UNSET = 0; 1030 | BADGE_TRAVEL_KM = 1; 1031 | BADGE_POKEDEX_ENTRIES = 2; 1032 | BADGE_CAPTURE_TOTAL = 3; 1033 | BADGE_DEFEATED_FORT = 4; 1034 | BADGE_EVOLVED_TOTAL = 5; 1035 | BADGE_HATCHED_TOTAL = 6; 1036 | BADGE_ENCOUNTERED_TOTAL = 7; 1037 | BADGE_POKESTOPS_VISITED = 8; 1038 | BADGE_UNIQUE_POKESTOPS = 9; 1039 | BADGE_POKEBALL_THROWN = 10; 1040 | BADGE_BIG_MAGIKARP = 11; 1041 | BADGE_DEPLOYED_TOTAL = 12; 1042 | BADGE_BATTLE_ATTACK_WON = 13; 1043 | BADGE_BATTLE_TRAINING_WON = 14; 1044 | BADGE_BATTLE_DEFEND_WON = 15; 1045 | BADGE_PRESTIGE_RAISED = 16; 1046 | BADGE_PRESTIGE_DROPPED = 17; 1047 | BADGE_TYPE_NORMAL = 18; 1048 | BADGE_TYPE_FIGHTING = 19; 1049 | BADGE_TYPE_FLYING = 20; 1050 | BADGE_TYPE_POISON = 21; 1051 | BADGE_TYPE_GROUND = 22; 1052 | BADGE_TYPE_ROCK = 23; 1053 | BADGE_TYPE_BUG = 24; 1054 | BADGE_TYPE_GHOST = 25; 1055 | BADGE_TYPE_STEEL = 26; 1056 | BADGE_TYPE_FIRE = 27; 1057 | BADGE_TYPE_WATER = 28; 1058 | BADGE_TYPE_GRASS = 29; 1059 | BADGE_TYPE_ELECTRIC = 30; 1060 | BADGE_TYPE_PSYCHIC = 31; 1061 | BADGE_TYPE_ICE = 32; 1062 | BADGE_TYPE_DRAGON = 33; 1063 | BADGE_TYPE_DARK = 34; 1064 | BADGE_TYPE_FAIRY = 35; 1065 | BADGE_SMALL_RATTATA = 36; 1066 | BADGE_PIKACHU = 37; 1067 | } 1068 | enum CameraInterpolation { 1069 | CAM_INTERP_CUT = 0; 1070 | CAM_INTERP_LINEAR = 1; 1071 | CAM_INTERP_SMOOTH = 2; 1072 | CAM_INTERP_SMOOTH_ROT_LINEAR_MOVE = 3; 1073 | CAM_INTERP_DEPENDS = 4; 1074 | } 1075 | enum CameraTarget { 1076 | CAM_TARGET_ATTACKER = 0; 1077 | CAM_TARGET_ATTACKER_EDGE = 1; 1078 | CAM_TARGET_ATTACKER_GROUND = 2; 1079 | CAM_TARGET_DEFENDER = 3; 1080 | CAM_TARGET_DEFENDER_EDGE = 4; 1081 | CAM_TARGET_DEFENDER_GROUND = 5; 1082 | CAM_TARGET_ATTACKER_DEFENDER = 6; 1083 | CAM_TARGET_ATTACKER_DEFENDER_EDGE = 7; 1084 | CAM_TARGET_DEFENDER_ATTACKER = 8; 1085 | CAM_TARGET_DEFENDER_ATTACKER_EDGE = 9; 1086 | CAM_TARGET_ATTACKER_DEFENDER_MIRROR = 11; 1087 | CAM_TARGET_SHOULDER_ATTACKER_DEFENDER = 12; 1088 | CAM_TARGET_SHOULDER_ATTACKER_DEFENDER_MIRROR = 13; 1089 | CAM_TARGET_ATTACKER_DEFENDER_WORLD = 14; 1090 | } 1091 | enum HoloPokemonMove { 1092 | MOVE_UNSET = 0; 1093 | V0001_MOVE_THUNDER_SHOCK = 1; 1094 | V0002_MOVE_QUICK_ATTACK = 2; 1095 | V0003_MOVE_SCRATCH = 3; 1096 | V0004_MOVE_EMBER = 4; 1097 | V0005_MOVE_VINE_WHIP = 5; 1098 | V0006_MOVE_TACKLE = 6; 1099 | V0007_MOVE_RAZOR_LEAF = 7; 1100 | V0008_MOVE_TAKE_DOWN = 8; 1101 | V0009_MOVE_WATER_GUN = 9; 1102 | V0010_MOVE_BITE = 10; 1103 | V0011_MOVE_POUND = 11; 1104 | V0012_MOVE_DOUBLE_SLAP = 12; 1105 | V0013_MOVE_WRAP = 13; 1106 | V0014_MOVE_HYPER_BEAM = 14; 1107 | V0015_MOVE_LICK = 15; 1108 | V0016_MOVE_DARK_PULSE = 16; 1109 | V0017_MOVE_SMOG = 17; 1110 | V0018_MOVE_SLUDGE = 18; 1111 | V0019_MOVE_METAL_CLAW = 19; 1112 | V0020_MOVE_VICE_GRIP = 20; 1113 | V0021_MOVE_FLAME_WHEEL = 21; 1114 | V0022_MOVE_MEGAHORN = 22; 1115 | V0023_MOVE_WING_ATTACK = 23; 1116 | V0024_MOVE_FLAMETHROWER = 24; 1117 | V0025_MOVE_SUCKER_PUNCH = 25; 1118 | V0026_MOVE_DIG = 26; 1119 | V0027_MOVE_LOW_KICK = 27; 1120 | V0028_MOVE_CROSS_CHOP = 28; 1121 | V0029_MOVE_PSYCHO_CUT = 29; 1122 | V0030_MOVE_PSYBEAM = 30; 1123 | V0031_MOVE_EARTHQUAKE = 31; 1124 | V0032_MOVE_STONE_EDGE = 32; 1125 | V0033_MOVE_ICE_PUNCH = 33; 1126 | V0034_MOVE_HEART_STAMP = 34; 1127 | V0035_MOVE_DISCHARGE = 35; 1128 | V0036_MOVE_FLASH_CANNON = 36; 1129 | V0037_MOVE_PECK = 37; 1130 | V0038_MOVE_DRILL_PECK = 38; 1131 | V0039_MOVE_ICE_BEAM = 39; 1132 | V0040_MOVE_BLIZZARD = 40; 1133 | V0041_MOVE_AIR_SLASH = 41; 1134 | V0042_MOVE_HEAT_WAVE = 42; 1135 | V0043_MOVE_TWINEEDLE = 43; 1136 | V0044_MOVE_POISON_JAB = 44; 1137 | V0045_MOVE_AERIAL_ACE = 45; 1138 | V0046_MOVE_DRILL_RUN = 46; 1139 | V0047_MOVE_PETAL_BLIZZARD = 47; 1140 | V0048_MOVE_MEGA_DRAIN = 48; 1141 | V0049_MOVE_BUG_BUZZ = 49; 1142 | V0050_MOVE_POISON_FANG = 50; 1143 | V0051_MOVE_NIGHT_SLASH = 51; 1144 | V0052_MOVE_SLASH = 52; 1145 | V0053_MOVE_BUBBLE_BEAM = 53; 1146 | V0054_MOVE_SUBMISSION = 54; 1147 | V0055_MOVE_KARATE_CHOP = 55; 1148 | V0056_MOVE_LOW_SWEEP = 56; 1149 | V0057_MOVE_AQUA_JET = 57; 1150 | V0058_MOVE_AQUA_TAIL = 58; 1151 | V0059_MOVE_SEED_BOMB = 59; 1152 | V0060_MOVE_PSYSHOCK = 60; 1153 | V0061_MOVE_ROCK_THROW = 61; 1154 | V0062_MOVE_ANCIENT_POWER = 62; 1155 | V0063_MOVE_ROCK_TOMB = 63; 1156 | V0064_MOVE_ROCK_SLIDE = 64; 1157 | V0065_MOVE_POWER_GEM = 65; 1158 | V0066_MOVE_SHADOW_SNEAK = 66; 1159 | V0067_MOVE_SHADOW_PUNCH = 67; 1160 | V0068_MOVE_SHADOW_CLAW = 68; 1161 | V0069_MOVE_OMINOUS_WIND = 69; 1162 | V0070_MOVE_SHADOW_BALL = 70; 1163 | V0071_MOVE_BULLET_PUNCH = 71; 1164 | V0072_MOVE_MAGNET_BOMB = 72; 1165 | V0073_MOVE_STEEL_WING = 73; 1166 | V0074_MOVE_IRON_HEAD = 74; 1167 | V0075_MOVE_PARABOLIC_CHARGE = 75; 1168 | V0076_MOVE_SPARK = 76; 1169 | V0077_MOVE_THUNDER_PUNCH = 77; 1170 | V0078_MOVE_THUNDER = 78; 1171 | V0079_MOVE_THUNDERBOLT = 79; 1172 | V0080_MOVE_TWISTER = 80; 1173 | V0081_MOVE_DRAGON_BREATH = 81; 1174 | V0082_MOVE_DRAGON_PULSE = 82; 1175 | V0083_MOVE_DRAGON_CLAW = 83; 1176 | V0084_MOVE_DISARMING_VOICE = 84; 1177 | V0085_MOVE_DRAINING_KISS = 85; 1178 | V0086_MOVE_DAZZLING_GLEAM = 86; 1179 | V0087_MOVE_MOONBLAST = 87; 1180 | V0088_MOVE_PLAY_ROUGH = 88; 1181 | V0089_MOVE_CROSS_POISON = 89; 1182 | V0090_MOVE_SLUDGE_BOMB = 90; 1183 | V0091_MOVE_SLUDGE_WAVE = 91; 1184 | V0092_MOVE_GUNK_SHOT = 92; 1185 | V0093_MOVE_MUD_SHOT = 93; 1186 | V0094_MOVE_BONE_CLUB = 94; 1187 | V0095_MOVE_BULLDOZE = 95; 1188 | V0096_MOVE_MUD_BOMB = 96; 1189 | V0097_MOVE_FURY_CUTTER = 97; 1190 | V0098_MOVE_BUG_BITE = 98; 1191 | V0099_MOVE_SIGNAL_BEAM = 99; 1192 | V0100_MOVE_X_SCISSOR = 100; 1193 | V0101_MOVE_FLAME_CHARGE = 101; 1194 | V0102_MOVE_FLAME_BURST = 102; 1195 | V0103_MOVE_FIRE_BLAST = 103; 1196 | V0104_MOVE_BRINE = 104; 1197 | V0105_MOVE_WATER_PULSE = 105; 1198 | V0106_MOVE_SCALD = 106; 1199 | V0107_MOVE_HYDRO_PUMP = 107; 1200 | V0108_MOVE_PSYCHIC = 108; 1201 | V0109_MOVE_PSYSTRIKE = 109; 1202 | V0110_MOVE_ICE_SHARD = 110; 1203 | V0111_MOVE_ICY_WIND = 111; 1204 | V0112_MOVE_FROST_BREATH = 112; 1205 | V0113_MOVE_ABSORB = 113; 1206 | V0114_MOVE_GIGA_DRAIN = 114; 1207 | V0115_MOVE_FIRE_PUNCH = 115; 1208 | V0116_MOVE_SOLAR_BEAM = 116; 1209 | V0117_MOVE_LEAF_BLADE = 117; 1210 | V0118_MOVE_POWER_WHIP = 118; 1211 | V0119_MOVE_SPLASH = 119; 1212 | V0120_MOVE_ACID = 120; 1213 | V0121_MOVE_AIR_CUTTER = 121; 1214 | V0122_MOVE_HURRICANE = 122; 1215 | V0123_MOVE_BRICK_BREAK = 123; 1216 | V0124_MOVE_CUT = 124; 1217 | V0125_MOVE_SWIFT = 125; 1218 | V0126_MOVE_HORN_ATTACK = 126; 1219 | V0127_MOVE_STOMP = 127; 1220 | V0128_MOVE_HEADBUTT = 128; 1221 | V0129_MOVE_HYPER_FANG = 129; 1222 | V0130_MOVE_SLAM = 130; 1223 | V0131_MOVE_BODY_SLAM = 131; 1224 | V0132_MOVE_REST = 132; 1225 | V0133_MOVE_STRUGGLE = 133; 1226 | V0134_MOVE_SCALD_BLASTOISE = 134; 1227 | V0135_MOVE_HYDRO_PUMP_BLASTOISE = 135; 1228 | V0136_MOVE_WRAP_GREEN = 136; 1229 | V0137_MOVE_WRAP_PINK = 137; 1230 | V0200_MOVE_FURY_CUTTER_FAST = 200; 1231 | V0201_MOVE_BUG_BITE_FAST = 201; 1232 | V0202_MOVE_BITE_FAST = 202; 1233 | V0203_MOVE_SUCKER_PUNCH_FAST = 203; 1234 | V0204_MOVE_DRAGON_BREATH_FAST = 204; 1235 | V0205_MOVE_THUNDER_SHOCK_FAST = 205; 1236 | V0206_MOVE_SPARK_FAST = 206; 1237 | V0207_MOVE_LOW_KICK_FAST = 207; 1238 | V0208_MOVE_KARATE_CHOP_FAST = 208; 1239 | V0209_MOVE_EMBER_FAST = 209; 1240 | V0210_MOVE_WING_ATTACK_FAST = 210; 1241 | V0211_MOVE_PECK_FAST = 211; 1242 | V0212_MOVE_LICK_FAST = 212; 1243 | V0213_MOVE_SHADOW_CLAW_FAST = 213; 1244 | V0214_MOVE_VINE_WHIP_FAST = 214; 1245 | V0215_MOVE_RAZOR_LEAF_FAST = 215; 1246 | V0216_MOVE_MUD_SHOT_FAST = 216; 1247 | V0217_MOVE_ICE_SHARD_FAST = 217; 1248 | V0218_MOVE_FROST_BREATH_FAST = 218; 1249 | V0219_MOVE_QUICK_ATTACK_FAST = 219; 1250 | V0220_MOVE_SCRATCH_FAST = 220; 1251 | V0221_MOVE_TACKLE_FAST = 221; 1252 | V0222_MOVE_POUND_FAST = 222; 1253 | V0223_MOVE_CUT_FAST = 223; 1254 | V0224_MOVE_POISON_JAB_FAST = 224; 1255 | V0225_MOVE_ACID_FAST = 225; 1256 | V0226_MOVE_PSYCHO_CUT_FAST = 226; 1257 | V0227_MOVE_ROCK_THROW_FAST = 227; 1258 | V0228_MOVE_METAL_CLAW_FAST = 228; 1259 | V0229_MOVE_BULLET_PUNCH_FAST = 229; 1260 | V0230_MOVE_WATER_GUN_FAST = 230; 1261 | V0231_MOVE_SPLASH_FAST = 231; 1262 | V0232_MOVE_WATER_GUN_FAST_BLASTOISE = 232; 1263 | V0233_MOVE_MUD_SLAP_FAST = 233; 1264 | V0234_MOVE_ZEN_HEADBUTT_FAST = 234; 1265 | V0235_MOVE_CONFUSION_FAST = 235; 1266 | V0236_MOVE_POISON_STING_FAST = 236; 1267 | V0237_MOVE_BUBBLE_FAST = 237; 1268 | V0238_MOVE_FEINT_ATTACK_FAST = 238; 1269 | V0239_MOVE_STEEL_WING_FAST = 239; 1270 | V0240_MOVE_FIRE_FANG_FAST = 240; 1271 | V0241_MOVE_ROCK_SMASH_FAST = 241; 1272 | } 1273 | enum HoloPokemonId { 1274 | POKEMON_UNSET = 0; 1275 | V0001_POKEMON_BULBASAUR = 1; 1276 | V0002_POKEMON_IVYSAUR = 2; 1277 | V0003_POKEMON_VENUSAUR = 3; 1278 | V0004_POKEMON_CHARMANDER = 4; 1279 | V0005_POKEMON_CHARMELEON = 5; 1280 | V0006_POKEMON_CHARIZARD = 6; 1281 | V0007_POKEMON_SQUIRTLE = 7; 1282 | V0008_POKEMON_WARTORTLE = 8; 1283 | V0009_POKEMON_BLASTOISE = 9; 1284 | V0010_POKEMON_CATERPIE = 10; 1285 | V0011_POKEMON_METAPOD = 11; 1286 | V0012_POKEMON_BUTTERFREE = 12; 1287 | V0013_POKEMON_WEEDLE = 13; 1288 | V0014_POKEMON_KAKUNA = 14; 1289 | V0015_POKEMON_BEEDRILL = 15; 1290 | V0016_POKEMON_PIDGEY = 16; 1291 | V0017_POKEMON_PIDGEOTTO = 17; 1292 | V0018_POKEMON_PIDGEOT = 18; 1293 | V0019_POKEMON_RATTATA = 19; 1294 | V0020_POKEMON_RATICATE = 20; 1295 | V0021_POKEMON_SPEAROW = 21; 1296 | V0022_POKEMON_FEAROW = 22; 1297 | V0023_POKEMON_EKANS = 23; 1298 | V0024_POKEMON_ARBOK = 24; 1299 | V0025_POKEMON_PIKACHU = 25; 1300 | V0026_POKEMON_RAICHU = 26; 1301 | V0027_POKEMON_SANDSHREW = 27; 1302 | V0028_POKEMON_SANDSLASH = 28; 1303 | V0029_POKEMON_NIDORAN = 29; 1304 | V0030_POKEMON_NIDORINA = 30; 1305 | V0031_POKEMON_NIDOQUEEN = 31; 1306 | V0032_POKEMON_NIDORAN = 32; 1307 | V0033_POKEMON_NIDORINO = 33; 1308 | V0034_POKEMON_NIDOKING = 34; 1309 | V0035_POKEMON_CLEFAIRY = 35; 1310 | V0036_POKEMON_CLEFABLE = 36; 1311 | V0037_POKEMON_VULPIX = 37; 1312 | V0038_POKEMON_NINETALES = 38; 1313 | V0039_POKEMON_JIGGLYPUFF = 39; 1314 | V0040_POKEMON_WIGGLYTUFF = 40; 1315 | V0041_POKEMON_ZUBAT = 41; 1316 | V0042_POKEMON_GOLBAT = 42; 1317 | V0043_POKEMON_ODDISH = 43; 1318 | V0044_POKEMON_GLOOM = 44; 1319 | V0045_POKEMON_VILEPLUME = 45; 1320 | V0046_POKEMON_PARAS = 46; 1321 | V0047_POKEMON_PARASECT = 47; 1322 | V0048_POKEMON_VENONAT = 48; 1323 | V0049_POKEMON_VENOMOTH = 49; 1324 | V0050_POKEMON_DIGLETT = 50; 1325 | V0051_POKEMON_DUGTRIO = 51; 1326 | V0052_POKEMON_MEOWTH = 52; 1327 | V0053_POKEMON_PERSIAN = 53; 1328 | V0054_POKEMON_PSYDUCK = 54; 1329 | V0055_POKEMON_GOLDUCK = 55; 1330 | V0056_POKEMON_MANKEY = 56; 1331 | V0057_POKEMON_PRIMEAPE = 57; 1332 | V0058_POKEMON_GROWLITHE = 58; 1333 | V0059_POKEMON_ARCANINE = 59; 1334 | V0060_POKEMON_POLIWAG = 60; 1335 | V0061_POKEMON_POLIWHIRL = 61; 1336 | V0062_POKEMON_POLIWRATH = 62; 1337 | V0063_POKEMON_ABRA = 63; 1338 | V0064_POKEMON_KADABRA = 64; 1339 | V0065_POKEMON_ALAKAZAM = 65; 1340 | V0066_POKEMON_MACHOP = 66; 1341 | V0067_POKEMON_MACHOKE = 67; 1342 | V0068_POKEMON_MACHAMP = 68; 1343 | V0069_POKEMON_BELLSPROUT = 69; 1344 | V0070_POKEMON_WEEPINBELL = 70; 1345 | V0071_POKEMON_VICTREEBEL = 71; 1346 | V0072_POKEMON_TENTACOOL = 72; 1347 | V0073_POKEMON_TENTACRUEL = 73; 1348 | V0074_POKEMON_GEODUDE = 74; 1349 | V0075_POKEMON_GRAVELER = 75; 1350 | V0076_POKEMON_GOLEM = 76; 1351 | V0077_POKEMON_PONYTA = 77; 1352 | V0078_POKEMON_RAPIDASH = 78; 1353 | V0079_POKEMON_SLOWPOKE = 79; 1354 | V0080_POKEMON_SLOWBRO = 80; 1355 | V0081_POKEMON_MAGNEMITE = 81; 1356 | V0082_POKEMON_MAGNETON = 82; 1357 | V0083_POKEMON_FARFETCHD = 83; 1358 | V0084_POKEMON_DODUO = 84; 1359 | V0085_POKEMON_DODRIO = 85; 1360 | V0086_POKEMON_SEEL = 86; 1361 | V0087_POKEMON_DEWGONG = 87; 1362 | V0088_POKEMON_GRIMER = 88; 1363 | V0089_POKEMON_MUK = 89; 1364 | V0090_POKEMON_SHELLDER = 90; 1365 | V0091_POKEMON_CLOYSTER = 91; 1366 | V0092_POKEMON_GASTLY = 92; 1367 | V0093_POKEMON_HAUNTER = 93; 1368 | V0094_POKEMON_GENGAR = 94; 1369 | V0095_POKEMON_ONIX = 95; 1370 | V0096_POKEMON_DROWZEE = 96; 1371 | V0097_POKEMON_HYPNO = 97; 1372 | V0098_POKEMON_KRABBY = 98; 1373 | V0099_POKEMON_KINGLER = 99; 1374 | V0100_POKEMON_VOLTORB = 100; 1375 | V0101_POKEMON_ELECTRODE = 101; 1376 | V0102_POKEMON_EXEGGCUTE = 102; 1377 | V0103_POKEMON_EXEGGUTOR = 103; 1378 | V0104_POKEMON_CUBONE = 104; 1379 | V0105_POKEMON_MAROWAK = 105; 1380 | V0106_POKEMON_HITMONLEE = 106; 1381 | V0107_POKEMON_HITMONCHAN = 107; 1382 | V0108_POKEMON_LICKITUNG = 108; 1383 | V0109_POKEMON_KOFFING = 109; 1384 | V0110_POKEMON_WEEZING = 110; 1385 | V0111_POKEMON_RHYHORN = 111; 1386 | V0112_POKEMON_RHYDON = 112; 1387 | V0113_POKEMON_CHANSEY = 113; 1388 | V0114_POKEMON_TANGELA = 114; 1389 | V0115_POKEMON_KANGASKHAN = 115; 1390 | V0116_POKEMON_HORSEA = 116; 1391 | V0117_POKEMON_SEADRA = 117; 1392 | V0118_POKEMON_GOLDEEN = 118; 1393 | V0119_POKEMON_SEAKING = 119; 1394 | V0120_POKEMON_STARYU = 120; 1395 | V0121_POKEMON_STARMIE = 121; 1396 | V0122_POKEMON_MR_MIME = 122; 1397 | V0123_POKEMON_SCYTHER = 123; 1398 | V0124_POKEMON_JYNX = 124; 1399 | V0125_POKEMON_ELECTABUZZ = 125; 1400 | V0126_POKEMON_MAGMAR = 126; 1401 | V0127_POKEMON_PINSIR = 127; 1402 | V0128_POKEMON_TAUROS = 128; 1403 | V0129_POKEMON_MAGIKARP = 129; 1404 | V0130_POKEMON_GYARADOS = 130; 1405 | V0131_POKEMON_LAPRAS = 131; 1406 | V0132_POKEMON_DITTO = 132; 1407 | V0133_POKEMON_EEVEE = 133; 1408 | V0134_POKEMON_VAPOREON = 134; 1409 | V0135_POKEMON_JOLTEON = 135; 1410 | V0136_POKEMON_FLAREON = 136; 1411 | V0137_POKEMON_PORYGON = 137; 1412 | V0138_POKEMON_OMANYTE = 138; 1413 | V0139_POKEMON_OMASTAR = 139; 1414 | V0140_POKEMON_KABUTO = 140; 1415 | V0141_POKEMON_KABUTOPS = 141; 1416 | V0142_POKEMON_AERODACTYL = 142; 1417 | V0143_POKEMON_SNORLAX = 143; 1418 | V0144_POKEMON_ARTICUNO = 144; 1419 | V0145_POKEMON_ZAPDOS = 145; 1420 | V0146_POKEMON_MOLTRES = 146; 1421 | V0147_POKEMON_DRATINI = 147; 1422 | V0148_POKEMON_DRAGONAIR = 148; 1423 | V0149_POKEMON_DRAGONITE = 149; 1424 | V0150_POKEMON_MEWTWO = 150; 1425 | V0151_POKEMON_MEW = 151; 1426 | } 1427 | 1428 | enum Platform { 1429 | PLATFORM_UNSET = 0; 1430 | PLATFORM_IOS = 1; 1431 | PLATFORM_ANDROID = 2; 1432 | PLATFORM_OSX = 3; 1433 | PLATFORM_WINDOWS = 4; 1434 | } 1435 | enum TutorialCompletion { 1436 | LEGAL_SCREEN = 0; 1437 | AVATAR_SELECTION = 1; 1438 | ACCOUNT_CREATION = 2; 1439 | POKEMON_CAPTURE = 3; 1440 | NAME_SELECTION = 4; 1441 | POKEMON_BERRY = 5; 1442 | USE_ITEM = 6; 1443 | FIRST_TIME_EXPERIENCE_COMPLETE = 7; 1444 | POKESTOP_TUTORIAL = 8; 1445 | GYM_TUTORIAL = 9; 1446 | } 1447 | 1448 | --------------------------------------------------------------------------------