- Adding protos
- Adding dumps
- Simple http server
- Various packets
- Added readme
This commit is contained in:
Felix 2016-08-05 20:43:56 +02:00
parent 89dd1501b0
commit bc853908e1
244 changed files with 21403 additions and 17 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
node_modules/

7
.travis.yml Normal file
View File

@ -0,0 +1,7 @@
sudo: false
language: node_js
script: "npm run test"
node_js:
- "4"
- "5"
- "6"

View File

@ -0,0 +1,11 @@
syntax = "proto3";
package POGOProtos.Data;
message AssetDigestEntry {
string asset_id = 1;
string bundle_name = 2;
int64 version = 3;
fixed32 checksum = 4;
int32 size = 5;
bytes key = 6;
}

View File

@ -0,0 +1,22 @@
syntax = "proto3";
package POGOProtos.Data.Battle;
import "POGOProtos/Data/Battle/BattleResults.proto";
import "POGOProtos/Data/Battle/BattleActionType.proto";
import "POGOProtos/Data/Battle/BattleParticipant.proto";
message BattleAction {
.POGOProtos.Data.Battle.BattleActionType Type = 1;
int64 action_start_ms = 2;
int32 duration_ms = 3;
int32 energy_delta = 5;
int32 attacker_index = 6;
int32 target_index = 7;
fixed64 active_pokemon_id = 8;
.POGOProtos.Data.Battle.BattleParticipant player_joined = 9;
.POGOProtos.Data.Battle.BattleResults battle_results = 10;
int64 damage_windows_start_timestamp_mss = 11;
int64 damage_windows_end_timestamp_mss = 12;
.POGOProtos.Data.Battle.BattleParticipant player_left = 13;
fixed64 target_pokemon_id = 14;
}

View File

@ -0,0 +1,16 @@
syntax = "proto3";
package POGOProtos.Data.Battle;
enum BattleActionType {
ACTION_UNSET = 0;
ACTION_ATTACK = 1;
ACTION_DODGE = 2;
ACTION_SPECIAL_ATTACK = 3;
ACTION_SWAP_POKEMON = 4;
ACTION_FAINT = 5;
ACTION_PLAYER_JOIN = 6;
ACTION_PLAYER_QUIT = 7;
ACTION_VICTORY = 8;
ACTION_DEFEAT = 9;
ACTION_TIMED_OUT = 10;
}

View File

@ -0,0 +1,15 @@
syntax = "proto3";
package POGOProtos.Data.Battle;
import "POGOProtos/Data/Battle/BattleState.proto";
import "POGOProtos/Data/Battle/BattleType.proto";
import "POGOProtos/Data/Battle/BattleAction.proto";
message BattleLog {
.POGOProtos.Data.Battle.BattleState state = 1;
.POGOProtos.Data.Battle.BattleType battle_type = 2;
int64 server_ms = 3;
repeated .POGOProtos.Data.Battle.BattleAction battle_actions = 4;
int64 battle_start_timestamp_ms = 5;
int64 battle_end_timestamp_ms = 6;
}

View File

@ -0,0 +1,12 @@
syntax = "proto3";
package POGOProtos.Data.Battle;
import "POGOProtos/Data/Battle/BattlePokemonInfo.proto";
import "POGOProtos/Data/Player/PlayerPublicProfile.proto";
message BattleParticipant {
.POGOProtos.Data.Battle.BattlePokemonInfo active_pokemon = 1;
.POGOProtos.Data.Player.PlayerPublicProfile trainer_public_profile = 2;
repeated .POGOProtos.Data.Battle.BattlePokemonInfo reverse_pokemon = 3;
repeated .POGOProtos.Data.Battle.BattlePokemonInfo defeated_pokemon = 4;
}

View File

@ -0,0 +1,10 @@
syntax = "proto3";
package POGOProtos.Data.Battle;
import "POGOProtos/Data/PokemonData.proto";
message BattlePokemonInfo {
.POGOProtos.Data.PokemonData pokemon_data = 1;
int32 current_health = 2;
int32 current_energy = 3;
}

View File

@ -0,0 +1,13 @@
syntax = "proto3";
package POGOProtos.Data.Battle;
import "POGOProtos/Data/Gym/GymState.proto";
import "POGOProtos/Data/Battle/BattleParticipant.proto";
message BattleResults {
.POGOProtos.Data.Gym.GymState gym_state = 1;
repeated .POGOProtos.Data.Battle.BattleParticipant attackers = 2;
repeated int32 player_experience_awarded = 3;
int64 next_defender_pokemon_id = 4;
int32 gym_points_delta = 5;
}

View File

@ -0,0 +1,10 @@
syntax = "proto3";
package POGOProtos.Data.Battle;
enum BattleState {
STATE_UNSET = 0;
ACTIVE = 1;
VICTORY = 2;
DEFEATED = 3;
TIMED_OUT = 4;
}

View File

@ -0,0 +1,8 @@
syntax = "proto3";
package POGOProtos.Data.Battle;
enum BattleType {
BATTLE_TYPE_UNSET = 0;
NORMAL = 1;
TRAINING = 2;
}

View File

@ -0,0 +1,11 @@
syntax = "proto3";
package POGOProtos.Data.Capture;
import "POGOProtos/Enums/ActivityType.proto";
message CaptureAward {
repeated .POGOProtos.Enums.ActivityType activity_type = 1 [packed=true];
repeated int32 xp = 2 [packed=true];
repeated int32 candy = 3 [packed=true];
repeated int32 stardust = 4 [packed=true];
}

View File

@ -0,0 +1,10 @@
syntax = "proto3";
package POGOProtos.Data.Capture;
import "POGOProtos/Inventory/Item/ItemId.proto";
message CaptureProbability {
repeated .POGOProtos.Inventory.Item.ItemId pokeball_type = 1 [packed=true];
repeated float capture_probability = 2 [packed=true];
double reticle_difficulty_scale = 12;
}

View File

@ -0,0 +1,9 @@
syntax = "proto3";
package POGOProtos.Data;
message DownloadUrlEntry {
string asset_id = 1;
string url = 2;
int32 size = 3;
fixed32 checksum = 4;
}

View File

@ -0,0 +1,10 @@
syntax = "proto3";
package POGOProtos.Data.Gym;
import "POGOProtos/Data/PokemonData.proto";
import "POGOProtos/Data/Player/PlayerPublicProfile.proto";
message GymMembership {
.POGOProtos.Data.PokemonData pokemon_data = 1;
.POGOProtos.Data.Player.PlayerPublicProfile trainer_public_profile = 2;
}

View File

@ -0,0 +1,10 @@
syntax = "proto3";
package POGOProtos.Data.Gym;
import "POGOProtos/Map/Fort/FortData.proto";
import "POGOProtos/Data/Gym/GymMembership.proto";
message GymState {
.POGOProtos.Map.Fort.FortData fort_data = 1;
repeated .POGOProtos.Data.Gym.GymMembership memberships = 2;
}

View File

@ -0,0 +1,15 @@
syntax = "proto3";
package POGOProtos.Data.Logs;
import "POGOProtos/Data/Logs/CatchPokemonLogEntry.proto";
import "POGOProtos/Data/Logs/FortSearchLogEntry.proto";
message ActionLogEntry {
int64 timestamp_ms = 1;
bool sfida = 2;
oneof Action {
.POGOProtos.Data.Logs.CatchPokemonLogEntry catch_pokemon = 3;
.POGOProtos.Data.Logs.FortSearchLogEntry fort_search = 4;
}
}

View File

@ -0,0 +1,17 @@
syntax = "proto3";
package POGOProtos.Data.Logs;
import "POGOProtos/Enums/PokemonId.proto";
message CatchPokemonLogEntry {
.POGOProtos.Data.Logs.CatchPokemonLogEntry.Result result = 1;
.POGOProtos.Enums.PokemonId pokemon_id = 2;
int32 combat_points = 3;
uint64 pokemon_data_id = 4;
enum Result {
UNSET = 0;
POKEMON_CAPTURED = 1;
POKEMON_FLED = 2;
}
}

View File

@ -0,0 +1,16 @@
syntax = "proto3";
package POGOProtos.Data.Logs;
import "POGOProtos/Inventory/Item/ItemData.proto";
message FortSearchLogEntry {
.POGOProtos.Data.Logs.FortSearchLogEntry.Result result = 1;
string fort_id = 2;
repeated .POGOProtos.Inventory.Item.ItemData items = 3;
int32 eggs = 4;
enum Result {
UNSET = 0;
SUCCESS = 1;
}
}

View File

@ -0,0 +1,7 @@
syntax = "proto3";
package POGOProtos.Data.Player;
message ContactSettings {
bool send_marketing_emails = 1;
bool send_push_notifications = 2;
}

View File

@ -0,0 +1,7 @@
syntax = "proto3";
package POGOProtos.Data.Player;
message Currency {
string name = 1;
int32 amount = 2;
}

View File

@ -0,0 +1,7 @@
syntax = "proto3";
package POGOProtos.Data.Player;
message DailyBonus {
int64 next_collected_timestamp_ms = 1;
int64 next_defender_bonus_collect_timestamp_ms = 2;
}

View File

@ -0,0 +1,10 @@
syntax = "proto3";
package POGOProtos.Data.Player;
import "POGOProtos/Enums/BadgeType.proto";
message EquippedBadge {
.POGOProtos.Enums.BadgeType badge_type = 1;
int32 level = 2;
int64 next_equip_change_allowed_timestamp_ms = 3;
}

View File

@ -0,0 +1,16 @@
syntax = "proto3";
package POGOProtos.Data.Player;
import "POGOProtos/Enums/Gender.proto";
message PlayerAvatar {
int32 skin = 2;
int32 hair = 3;
int32 shirt = 4;
int32 pants = 5;
int32 hat = 6;
int32 shoes = 7;
.POGOProtos.Enums.Gender gender = 8;
int32 eyes = 9;
int32 backpack = 10;
}

View File

@ -0,0 +1,6 @@
syntax = "proto3";
package POGOProtos.Data.Player;
message PlayerCamera {
bool is_default_camera = 1;
}

View File

@ -0,0 +1,6 @@
syntax = "proto3";
package POGOProtos.Data.Player;
message PlayerCurrency {
int32 gems = 1;
}

View File

@ -0,0 +1,10 @@
syntax = "proto3";
package POGOProtos.Data.Player;
import "POGOProtos/Data/Player/PlayerAvatar.proto";
message PlayerPublicProfile {
string name = 1;
int32 level = 2;
.POGOProtos.Data.Player.PlayerAvatar avatar = 3;
}

View File

@ -0,0 +1,28 @@
syntax = "proto3";
package POGOProtos.Data.Player;
message PlayerStats {
int32 level = 1;
int64 experience = 2;
int64 prev_level_xp = 3;
int64 next_level_xp = 4;
float km_walked = 5;
int32 pokemons_encountered = 6;
int32 unique_pokedex_entries = 7;
int32 pokemons_captured = 8;
int32 evolutions = 9;
int32 poke_stop_visits = 10;
int32 pokeballs_thrown = 11;
int32 eggs_hatched = 12;
int32 big_magikarp_caught = 13;
int32 battle_attack_won = 14;
int32 battle_attack_total = 15;
int32 battle_defended_won = 16;
int32 battle_training_won = 17;
int32 battle_training_total = 18;
int32 prestige_raised_total = 19;
int32 prestige_dropped_total = 20;
int32 pokemon_deployed = 21;
bytes pokemon_caught_by_type = 22; // TODO: repeated PokemonType ??
int32 small_rattata_caught = 23;
}

View File

@ -0,0 +1,12 @@
syntax = "proto3";
package POGOProtos.Data;
import "POGOProtos/Enums/BadgeType.proto";
message PlayerBadge {
.POGOProtos.Enums.BadgeType badge_type = 1;
int32 rank = 2;
int32 start_value = 3;
int32 end_value = 4;
double current_value = 5;
}

View File

@ -0,0 +1,24 @@
syntax = "proto3";
package POGOProtos.Data;
import "POGOProtos/Enums/TutorialState.proto";
import "POGOProtos/Data/Player/PlayerAvatar.proto";
import "POGOProtos/Data/Player/DailyBonus.proto";
import "POGOProtos/Data/Player/EquippedBadge.proto";
import "POGOProtos/Data/Player/ContactSettings.proto";
import "POGOProtos/Data/Player/Currency.proto";
import "POGOProtos/Enums/TeamColor.proto";
message PlayerData {
int64 creation_timestamp_ms = 1;
string username = 2;
.POGOProtos.Enums.TeamColor team = 5;
repeated .POGOProtos.Enums.TutorialState tutorial_state = 7 [packed=true];
.POGOProtos.Data.Player.PlayerAvatar avatar = 8;
int32 max_pokemon_storage = 9;
int32 max_item_storage = 10;
.POGOProtos.Data.Player.DailyBonus daily_bonus = 11;
.POGOProtos.Data.Player.EquippedBadge equipped_badge = 12;
.POGOProtos.Data.Player.ContactSettings contact_settings = 13;
repeated .POGOProtos.Data.Player.Currency currencies = 14;
}

View File

@ -0,0 +1,12 @@
syntax = "proto3";
package POGOProtos.Data;
import "POGOProtos/Enums/PokemonId.proto";
message PokedexEntry {
.POGOProtos.Enums.PokemonId pokemon_id = 1;
int32 times_encountered = 2;
int32 times_captured = 3;
int32 evolution_stone_pieces = 4;
int32 evolution_stones = 5;
}

View File

@ -0,0 +1,39 @@
syntax = "proto3";
package POGOProtos.Data;
import "POGOProtos/Enums/PokemonId.proto";
import "POGOProtos/Enums/PokemonMove.proto";
import "POGOProtos/Inventory/Item/ItemId.proto";
message PokemonData {
fixed64 id = 1;
.POGOProtos.Enums.PokemonId pokemon_id = 2;
int32 cp = 3;
int32 stamina = 4;
int32 stamina_max = 5;
.POGOProtos.Enums.PokemonMove move_1 = 6;
.POGOProtos.Enums.PokemonMove move_2 = 7;
string deployed_fort_id = 8;
string owner_name = 9;
bool is_egg = 10;
double egg_km_walked_target = 11;
double egg_km_walked_start = 12;
int32 origin = 14;
float height_m = 15;
float weight_kg = 16;
int32 individual_attack = 17;
int32 individual_defense = 18;
int32 individual_stamina = 19;
float cp_multiplier = 20;
.POGOProtos.Inventory.Item.ItemId pokeball = 21;
uint64 captured_cell_id = 22;
int32 battles_attacked = 23;
int32 battles_defended = 24;
string egg_incubator_id = 25;
uint64 creation_time_ms = 26;
int32 num_upgrades = 27;
float additional_cp_multiplier = 28;
int32 favorite = 29;
string nickname = 30;
int32 from_fort = 31;
}

View File

@ -0,0 +1,29 @@
syntax = "proto3";
package POGOProtos.Enums;
enum ActivityType {
ACTIVITY_UNKNOWN = 0;
ACTIVITY_CATCH_POKEMON = 1;
ACTIVITY_CATCH_LEGEND_POKEMON = 2;
ACTIVITY_FLEE_POKEMON = 3;
ACTIVITY_DEFEAT_FORT = 4;
ACTIVITY_EVOLVE_POKEMON = 5;
ACTIVITY_HATCH_EGG = 6;
ACTIVITY_WALK_KM = 7;
ACTIVITY_POKEDEX_ENTRY_NEW = 8;
ACTIVITY_CATCH_FIRST_THROW = 9;
ACTIVITY_CATCH_NICE_THROW = 10;
ACTIVITY_CATCH_GREAT_THROW = 11;
ACTIVITY_CATCH_EXCELLENT_THROW = 12;
ACTIVITY_CATCH_CURVEBALL = 13;
ACTIVITY_CATCH_FIRST_CATCH_OF_DAY = 14;
ACTIVITY_CATCH_MILESTONE = 15;
ACTIVITY_TRAIN_POKEMON = 16;
ACTIVITY_SEARCH_FORT = 17;
ACTIVITY_RELEASE_POKEMON = 18;
ACTIVITY_HATCH_EGG_SMALL_BONUS = 19;
ACTIVITY_HATCH_EGG_MEDIUM_BONUS = 20;
ACTIVITY_HATCH_EGG_LARGE_BONUS = 21;
ACTIVITY_DEFEAT_GYM_DEFENDER = 22;
ACTIVITY_DEFEAT_GYM_LEADER = 23;
}

View File

@ -0,0 +1,43 @@
syntax = "proto3";
package POGOProtos.Enums;
enum BadgeType {
BADGE_UNSET = 0;
BADGE_TRAVEL_KM = 1;
BADGE_POKEDEX_ENTRIES = 2;
BADGE_CAPTURE_TOTAL = 3;
BADGE_DEFEATED_FORT = 4;
BADGE_EVOLVED_TOTAL = 5;
BADGE_HATCHED_TOTAL = 6;
BADGE_ENCOUNTERED_TOTAL = 7;
BADGE_POKESTOPS_VISITED = 8;
BADGE_UNIQUE_POKESTOPS = 9;
BADGE_POKEBALL_THROWN = 10;
BADGE_BIG_MAGIKARP = 11;
BADGE_DEPLOYED_TOTAL = 12;
BADGE_BATTLE_ATTACK_WON = 13;
BADGE_BATTLE_TRAINING_WON = 14;
BADGE_BATTLE_DEFEND_WON = 15;
BADGE_PRESTIGE_RAISED = 16;
BADGE_PRESTIGE_DROPPED = 17;
BADGE_TYPE_NORMAL = 18;
BADGE_TYPE_FIGHTING = 19;
BADGE_TYPE_FLYING = 20;
BADGE_TYPE_POISON = 21;
BADGE_TYPE_GROUND = 22;
BADGE_TYPE_ROCK = 23;
BADGE_TYPE_BUG = 24;
BADGE_TYPE_GHOST = 25;
BADGE_TYPE_STEEL = 26;
BADGE_TYPE_FIRE = 27;
BADGE_TYPE_WATER = 28;
BADGE_TYPE_GRASS = 29;
BADGE_TYPE_ELECTRIC = 30;
BADGE_TYPE_PSYCHIC = 31;
BADGE_TYPE_ICE = 32;
BADGE_TYPE_DRAGON = 33;
BADGE_TYPE_DARK = 34;
BADGE_TYPE_FAIRY = 35;
BADGE_SMALL_RATTATA = 36;
BADGE_PIKACHU = 37;
}

View File

@ -0,0 +1,10 @@
syntax = "proto3";
package POGOProtos.Enums;
enum CameraInterpolation {
CAM_INTERP_CUT = 0;
CAM_INTERP_LINEAR = 1;
CAM_INTERP_SMOOTH = 2;
CAM_INTERP_SMOOTH_ROT_LINEAR_MOVE = 3;
CAM_INTERP_DEPENDS = 4;
}

View File

@ -0,0 +1,19 @@
syntax = "proto3";
package POGOProtos.Enums;
enum CameraTarget {
CAM_TARGET_ATTACKER = 0;
CAM_TARGET_ATTACKER_EDGE = 1;
CAM_TARGET_ATTACKER_GROUND = 2;
CAM_TARGET_DEFENDER = 3;
CAM_TARGET_DEFENDER_EDGE = 4;
CAM_TARGET_DEFENDER_GROUND = 5;
CAM_TARGET_ATTACKER_DEFENDER = 6;
CAM_TARGET_ATTACKER_DEFENDER_EDGE = 7;
CAM_TARGET_DEFENDER_ATTACKER = 8;
CAM_TARGET_DEFENDER_ATTACKER_EDGE = 9;
CAM_TARGET_ATTACKER_DEFENDER_MIRROR = 11;
CAM_TARGET_SHOULDER_ATTACKER_DEFENDER = 12;
CAM_TARGET_SHOULDER_ATTACKER_DEFENDER_MIRROR = 13;
CAM_TARGET_ATTACKER_DEFENDER_WORLD = 14;
}

View File

@ -0,0 +1,7 @@
syntax = "proto3";
package POGOProtos.Enums;
enum Gender {
MALE = 0;
FEMALE = 1;
}

View File

@ -0,0 +1,10 @@
syntax = "proto3";
package POGOProtos.Enums;
enum HoloIapItemCategory {
IAP_CATEGORY_NONE = 0;
IAP_CATEGORY_BUNDLE = 1;
IAP_CATEGORY_ITEMS = 2;
IAP_CATEGORY_UPGRADES = 3;
IAP_CATEGORY_POKECOINS = 4;
}

View File

@ -0,0 +1,17 @@
syntax = "proto3";
package POGOProtos.Enums;
enum ItemCategory {
ITEM_CATEGORY_NONE = 0;
ITEM_CATEGORY_POKEBALL = 1;
ITEM_CATEGORY_FOOD = 2;
ITEM_CATEGORY_MEDICINE = 3;
ITEM_CATEGORY_BOOST = 4;
ITEM_CATEGORY_UTILITES = 5;
ITEM_CATEGORY_CAMERA = 6;
ITEM_CATEGORY_DISK = 7;
ITEM_CATEGORY_INCUBATOR = 8;
ITEM_CATEGORY_INCENSE = 9;
ITEM_CATEGORY_XP_BOOST = 10;
ITEM_CATEGORY_INVENTORY_UPGRADE = 11;
}

View File

@ -0,0 +1,20 @@
syntax = "proto3";
package POGOProtos.Enums;
enum ItemEffect {
ITEM_EFFECT_NONE = 0;
ITEM_EFFECT_CAP_NO_FLEE = 1000;
ITEM_EFFECT_CAP_NO_MOVEMENT = 1002;
ITEM_EFFECT_CAP_NO_THREAT = 1003;
ITEM_EFFECT_CAP_TARGET_MAX = 1004;
ITEM_EFFECT_CAP_TARGET_SLOW = 1005;
ITEM_EFFECT_CAP_CHANCE_NIGHT = 1006;
ITEM_EFFECT_CAP_CHANCE_TRAINER = 1007;
ITEM_EFFECT_CAP_CHANCE_FIRST_THROW = 1008;
ITEM_EFFECT_CAP_CHANCE_LEGEND = 1009;
ITEM_EFFECT_CAP_CHANCE_HEAVY = 1010;
ITEM_EFFECT_CAP_CHANCE_REPEAT = 1011;
ITEM_EFFECT_CAP_CHANCE_MULTI_THROW = 1012;
ITEM_EFFECT_CAP_CHANCE_ALWAYS = 1013;
ITEM_EFFECT_CAP_CHANCE_SINGLE_THROW = 1014;
}

View File

@ -0,0 +1,10 @@
syntax = "proto3";
package POGOProtos.Enums;
enum Platform {
UNSET = 0;
IOS = 1;
ANDROID = 2;
OSX = 3;
WINDOWS = 4;
}

View File

@ -0,0 +1,86 @@
syntax = "proto3";
package POGOProtos.Enums;
enum PokemonFamilyId {
FAMILY_UNSET = 0;
FAMILY_BULBASAUR = 1;
FAMILY_CHARMANDER = 4;
FAMILY_SQUIRTLE = 7;
FAMILY_CATERPIE = 10;
FAMILY_WEEDLE = 13;
FAMILY_PIDGEY = 16;
FAMILY_RATTATA = 19;
FAMILY_SPEAROW = 21;
FAMILY_EKANS = 23;
FAMILY_PIKACHU = 25;
FAMILY_SANDSHREW = 27;
FAMILY_NIDORAN_FEMALE = 29;
FAMILY_NIDORAN_MALE = 32;
FAMILY_CLEFAIRY = 35;
FAMILY_VULPIX = 37;
FAMILY_JIGGLYPUFF = 39;
FAMILY_ZUBAT = 41;
FAMILY_ODDISH = 43;
FAMILY_PARAS = 46;
FAMILY_VENONAT = 48;
FAMILY_DIGLETT = 50;
FAMILY_MEOWTH = 52;
FAMILY_PSYDUCK = 54;
FAMILY_MANKEY = 56;
FAMILY_GROWLITHE = 58;
FAMILY_POLIWAG = 60;
FAMILY_ABRA = 63;
FAMILY_MACHOP = 66;
FAMILY_BELLSPROUT = 69;
FAMILY_TENTACOOL = 72;
FAMILY_GEODUDE = 74;
FAMILY_PONYTA = 77;
FAMILY_SLOWPOKE = 79;
FAMILY_MAGNEMITE = 81;
FAMILY_FARFETCHD = 83;
FAMILY_DODUO = 84;
FAMILY_SEEL = 86;
FAMILY_GRIMER = 88;
FAMILY_SHELLDER = 90;
FAMILY_GASTLY = 92;
FAMILY_ONIX = 95;
FAMILY_DROWZEE = 96;
FAMILY_HYPNO = 97;
FAMILY_KRABBY = 98;
FAMILY_VOLTORB = 100;
FAMILY_EXEGGCUTE = 102;
FAMILY_CUBONE = 104;
FAMILY_HITMONLEE = 106;
FAMILY_HITMONCHAN = 107;
FAMILY_LICKITUNG = 108;
FAMILY_KOFFING = 109;
FAMILY_RHYHORN = 111;
FAMILY_CHANSEY = 113;
FAMILY_TANGELA = 114;
FAMILY_KANGASKHAN = 115;
FAMILY_HORSEA = 116;
FAMILY_GOLDEEN = 118;
FAMILY_STARYU = 120;
FAMILY_MR_MIME = 122;
FAMILY_SCYTHER = 123;
FAMILY_JYNX = 124;
FAMILY_ELECTABUZZ = 125;
FAMILY_MAGMAR = 126;
FAMILY_PINSIR = 127;
FAMILY_TAUROS = 128;
FAMILY_MAGIKARP = 129;
FAMILY_LAPRAS = 131;
FAMILY_DITTO = 132;
FAMILY_EEVEE = 133;
FAMILY_PORYGON = 137;
FAMILY_OMANYTE = 138;
FAMILY_KABUTO = 140;
FAMILY_AERODACTYL = 142;
FAMILY_SNORLAX = 143;
FAMILY_ARTICUNO = 144;
FAMILY_ZAPDOS = 145;
FAMILY_MOLTRES = 146;
FAMILY_DRATINI = 147;
FAMILY_MEWTWO = 150;
FAMILY_MEW = 151;
}

View File

@ -0,0 +1,157 @@
syntax = "proto3";
package POGOProtos.Enums;
enum PokemonId {
MISSINGNO = 0;
BULBASAUR = 1;
IVYSAUR = 2;
VENUSAUR = 3;
CHARMANDER = 4;
CHARMELEON = 5;
CHARIZARD = 6;
SQUIRTLE = 7;
WARTORTLE = 8;
BLASTOISE = 9;
CATERPIE = 10;
METAPOD = 11;
BUTTERFREE = 12;
WEEDLE = 13;
KAKUNA = 14;
BEEDRILL = 15;
PIDGEY = 16;
PIDGEOTTO = 17;
PIDGEOT = 18;
RATTATA = 19;
RATICATE = 20;
SPEAROW = 21;
FEAROW = 22;
EKANS = 23;
ARBOK = 24;
PIKACHU = 25;
RAICHU = 26;
SANDSHREW = 27;
SANDSLASH = 28;
NIDORAN_FEMALE = 29;
NIDORINA = 30;
NIDOQUEEN = 31;
NIDORAN_MALE = 32;
NIDORINO = 33;
NIDOKING = 34;
CLEFAIRY = 35;
CLEFABLE = 36;
VULPIX = 37;
NINETALES = 38;
JIGGLYPUFF = 39;
WIGGLYTUFF = 40;
ZUBAT = 41;
GOLBAT = 42;
ODDISH = 43;
GLOOM = 44;
VILEPLUME = 45;
PARAS = 46;
PARASECT = 47;
VENONAT = 48;
VENOMOTH = 49;
DIGLETT = 50;
DUGTRIO = 51;
MEOWTH = 52;
PERSIAN = 53;
PSYDUCK = 54;
GOLDUCK = 55;
MANKEY = 56;
PRIMEAPE = 57;
GROWLITHE = 58;
ARCANINE = 59;
POLIWAG = 60;
POLIWHIRL = 61;
POLIWRATH = 62;
ABRA = 63;
KADABRA = 64;
ALAKAZAM = 65;
MACHOP = 66;
MACHOKE = 67;
MACHAMP = 68;
BELLSPROUT = 69;
WEEPINBELL = 70;
VICTREEBEL = 71;
TENTACOOL = 72;
TENTACRUEL = 73;
GEODUDE = 74;
GRAVELER = 75;
GOLEM = 76;
PONYTA = 77;
RAPIDASH = 78;
SLOWPOKE = 79;
SLOWBRO = 80;
MAGNEMITE = 81;
MAGNETON = 82;
FARFETCHD = 83;
DODUO = 84;
DODRIO = 85;
SEEL = 86;
DEWGONG = 87;
GRIMER = 88;
MUK = 89;
SHELLDER = 90;
CLOYSTER = 91;
GASTLY = 92;
HAUNTER = 93;
GENGAR = 94;
ONIX = 95;
DROWZEE = 96;
HYPNO = 97;
KRABBY = 98;
KINGLER = 99;
VOLTORB = 100;
ELECTRODE = 101;
EXEGGCUTE = 102;
EXEGGUTOR = 103;
CUBONE = 104;
MAROWAK = 105;
HITMONLEE = 106;
HITMONCHAN = 107;
LICKITUNG = 108;
KOFFING = 109;
WEEZING = 110;
RHYHORN = 111;
RHYDON = 112;
CHANSEY = 113;
TANGELA = 114;
KANGASKHAN = 115;
HORSEA = 116;
SEADRA = 117;
GOLDEEN = 118;
SEAKING = 119;
STARYU = 120;
STARMIE = 121;
MR_MIME = 122;
SCYTHER = 123;
JYNX = 124;
ELECTABUZZ = 125;
MAGMAR = 126;
PINSIR = 127;
TAUROS = 128;
MAGIKARP = 129;
GYARADOS = 130;
LAPRAS = 131;
DITTO = 132;
EEVEE = 133;
VAPOREON = 134;
JOLTEON = 135;
FLAREON = 136;
PORYGON = 137;
OMANYTE = 138;
OMASTAR = 139;
KABUTO = 140;
KABUTOPS = 141;
AERODACTYL = 142;
SNORLAX = 143;
ARTICUNO = 144;
ZAPDOS = 145;
MOLTRES = 146;
DRATINI = 147;
DRAGONAIR = 148;
DRAGONITE = 149;
MEWTWO = 150;
MEW = 151;
}

View File

@ -0,0 +1,185 @@
syntax = "proto3";
package POGOProtos.Enums;
enum PokemonMove {
MOVE_UNSET = 0;
THUNDER_SHOCK = 1;
QUICK_ATTACK = 2;
SCRATCH = 3;
EMBER = 4;
VINE_WHIP = 5;
TACKLE = 6;
RAZOR_LEAF = 7;
TAKE_DOWN = 8;
WATER_GUN = 9;
BITE = 10;
POUND = 11;
DOUBLE_SLAP = 12;
WRAP = 13;
HYPER_BEAM = 14;
LICK = 15;
DARK_PULSE = 16;
SMOG = 17;
SLUDGE = 18;
METAL_CLAW = 19;
VICE_GRIP = 20;
FLAME_WHEEL = 21;
MEGAHORN = 22;
WING_ATTACK = 23;
FLAMETHROWER = 24;
SUCKER_PUNCH = 25;
DIG = 26;
LOW_KICK = 27;
CROSS_CHOP = 28;
PSYCHO_CUT = 29;
PSYBEAM = 30;
EARTHQUAKE = 31;
STONE_EDGE = 32;
ICE_PUNCH = 33;
HEART_STAMP = 34;
DISCHARGE = 35;
FLASH_CANNON = 36;
PECK = 37;
DRILL_PECK = 38;
ICE_BEAM = 39;
BLIZZARD = 40;
AIR_SLASH = 41;
HEAT_WAVE = 42;
TWINEEDLE = 43;
POISON_JAB = 44;
AERIAL_ACE = 45;
DRILL_RUN = 46;
PETAL_BLIZZARD = 47;
MEGA_DRAIN = 48;
BUG_BUZZ = 49;
POISON_FANG = 50;
NIGHT_SLASH = 51;
SLASH = 52;
BUBBLE_BEAM = 53;
SUBMISSION = 54;
KARATE_CHOP = 55;
LOW_SWEEP = 56;
AQUA_JET = 57;
AQUA_TAIL = 58;
SEED_BOMB = 59;
PSYSHOCK = 60;
ROCK_THROW = 61;
ANCIENT_POWER = 62;
ROCK_TOMB = 63;
ROCK_SLIDE = 64;
POWER_GEM = 65;
SHADOW_SNEAK = 66;
SHADOW_PUNCH = 67;
SHADOW_CLAW = 68;
OMINOUS_WIND = 69;
SHADOW_BALL = 70;
BULLET_PUNCH = 71;
MAGNET_BOMB = 72;
STEEL_WING = 73;
IRON_HEAD = 74;
PARABOLIC_CHARGE = 75;
SPARK = 76;
THUNDER_PUNCH = 77;
THUNDER = 78;
THUNDERBOLT = 79;
TWISTER = 80;
DRAGON_BREATH = 81;
DRAGON_PULSE = 82;
DRAGON_CLAW = 83;
DISARMING_VOICE = 84;
DRAINING_KISS = 85;
DAZZLING_GLEAM = 86;
MOONBLAST = 87;
PLAY_ROUGH = 88;
CROSS_POISON = 89;
SLUDGE_BOMB = 90;
SLUDGE_WAVE = 91;
GUNK_SHOT = 92;
MUD_SHOT = 93;
BONE_CLUB = 94;
BULLDOZE = 95;
MUD_BOMB = 96;
FURY_CUTTER = 97;
BUG_BITE = 98;
SIGNAL_BEAM = 99;
X_SCISSOR = 100;
FLAME_CHARGE = 101;
FLAME_BURST = 102;
FIRE_BLAST = 103;
BRINE = 104;
WATER_PULSE = 105;
SCALD = 106;
HYDRO_PUMP = 107;
PSYCHIC = 108;
PSYSTRIKE = 109;
ICE_SHARD = 110;
ICY_WIND = 111;
FROST_BREATH = 112;
ABSORB = 113;
GIGA_DRAIN = 114;
FIRE_PUNCH = 115;
SOLAR_BEAM = 116;
LEAF_BLADE = 117;
POWER_WHIP = 118;
SPLASH = 119;
ACID = 120;
AIR_CUTTER = 121;
HURRICANE = 122;
BRICK_BREAK = 123;
CUT = 124;
SWIFT = 125;
HORN_ATTACK = 126;
STOMP = 127;
HEADBUTT = 128;
HYPER_FANG = 129;
SLAM = 130;
BODY_SLAM = 131;
REST = 132;
STRUGGLE = 133;
SCALD_BLASTOISE = 134;
HYDRO_PUMP_BLASTOISE = 135;
WRAP_GREEN = 136;
WRAP_PINK = 137;
FURY_CUTTER_FAST = 200;
BUG_BITE_FAST = 201;
BITE_FAST = 202;
SUCKER_PUNCH_FAST = 203;
DRAGON_BREATH_FAST = 204;
THUNDER_SHOCK_FAST = 205;
SPARK_FAST = 206;
LOW_KICK_FAST = 207;
KARATE_CHOP_FAST = 208;
EMBER_FAST = 209;
WING_ATTACK_FAST = 210;
PECK_FAST = 211;
LICK_FAST = 212;
SHADOW_CLAW_FAST = 213;
VINE_WHIP_FAST = 214;
RAZOR_LEAF_FAST = 215;
MUD_SHOT_FAST = 216;
ICE_SHARD_FAST = 217;
FROST_BREATH_FAST = 218;
QUICK_ATTACK_FAST = 219;
SCRATCH_FAST = 220;
TACKLE_FAST = 221;
POUND_FAST = 222;
CUT_FAST = 223;
POISON_JAB_FAST = 224;
ACID_FAST = 225;
PSYCHO_CUT_FAST = 226;
ROCK_THROW_FAST = 227;
METAL_CLAW_FAST = 228;
BULLET_PUNCH_FAST = 229;
WATER_GUN_FAST = 230;
SPLASH_FAST = 231;
WATER_GUN_FAST_BLASTOISE = 232;
MUD_SLAP_FAST = 233;
ZEN_HEADBUTT_FAST = 234;
CONFUSION_FAST = 235;
POISON_STING_FAST = 236;
BUBBLE_FAST = 237;
FEINT_ATTACK_FAST = 238;
STEEL_WING_FAST = 239;
FIRE_FANG_FAST = 240;
ROCK_SMASH_FAST = 241;
}

View File

@ -0,0 +1,12 @@
syntax = "proto3";
package POGOProtos.Enums;
enum PokemonMovementType {
MOVEMENT_STATIC = 0;
MOVEMENT_JUMP = 1;
MOVEMENT_VERTICAL = 2;
MOVEMENT_PSYCHIC = 3;
MOVEMENT_ELECTRIC = 4;
MOVEMENT_FLYING = 5;
MOVEMENT_HOVERING = 6;
}

View File

@ -0,0 +1,8 @@
syntax = "proto3";
package POGOProtos.Enums;
enum PokemonRarity {
NORMAL = 0;
LEGENDARY = 1;
MYTHIC = 2;
}

View File

@ -0,0 +1,24 @@
syntax = "proto3";
package POGOProtos.Enums;
enum PokemonType {
POKEMON_TYPE_NONE = 0;
POKEMON_TYPE_NORMAL = 1;
POKEMON_TYPE_FIGHTING = 2;
POKEMON_TYPE_FLYING = 3;
POKEMON_TYPE_POISON = 4;
POKEMON_TYPE_GROUND = 5;
POKEMON_TYPE_ROCK = 6;
POKEMON_TYPE_BUG = 7;
POKEMON_TYPE_GHOST = 8;
POKEMON_TYPE_STEEL = 9;
POKEMON_TYPE_FIRE = 10;
POKEMON_TYPE_WATER = 11;
POKEMON_TYPE_GRASS = 12;
POKEMON_TYPE_ELECTRIC = 13;
POKEMON_TYPE_PSYCHIC = 14;
POKEMON_TYPE_ICE = 15;
POKEMON_TYPE_DRAGON = 16;
POKEMON_TYPE_DARK = 17;
POKEMON_TYPE_FAIRY = 18;
}

View File

@ -0,0 +1,9 @@
syntax = "proto3";
package POGOProtos.Enums;
enum TeamColor {
NEUTRAL = 0;
BLUE = 1;
RED = 2;
YELLOW = 3;
}

View File

@ -0,0 +1,15 @@
syntax = "proto3";
package POGOProtos.Enums;
enum TutorialState {
LEGAL_SCREEN = 0;
AVATAR_SELECTION = 1;
ACCOUNT_CREATION = 2;
POKEMON_CAPTURE = 3;
NAME_SELECTION = 4;
POKEMON_BERRY = 5;
USE_ITEM = 6;
FIRST_TIME_EXPERIENCE_COMPLETE = 7;
POKESTOP_TUTORIAL = 8;
GYM_TUTORIAL = 9;
}

View File

@ -0,0 +1,12 @@
syntax = "proto3";
package POGOProtos.Inventory;
import "POGOProtos/Inventory/Item/ItemId.proto";
import "POGOProtos/Inventory/Item/ItemType.proto";
message AppliedItem {
.POGOProtos.Inventory.Item.ItemId item_id = 1;
.POGOProtos.Inventory.Item.ItemType item_type = 2;
int64 expire_ms = 3;
int64 applied_ms = 4;
}

View File

@ -0,0 +1,8 @@
syntax = "proto3";
package POGOProtos.Inventory;
import "POGOProtos/Inventory/AppliedItem.proto";
message AppliedItems {
repeated .POGOProtos.Inventory.AppliedItem item = 4;
}

View File

@ -0,0 +1,9 @@
syntax = "proto3";
package POGOProtos.Inventory;
import "POGOProtos/Enums/PokemonFamilyId.proto";
message Candy {
.POGOProtos.Enums.PokemonFamilyId family_id = 1;
int32 candy = 2;
}

View File

@ -0,0 +1,15 @@
syntax = "proto3";
package POGOProtos.Inventory;
import "POGOProtos/Inventory/Item/ItemId.proto";
import "POGOProtos/Inventory/EggIncubatorType.proto";
message EggIncubator {
string id = 1;
.POGOProtos.Inventory.Item.ItemId item_id = 2;
.POGOProtos.Inventory.EggIncubatorType incubator_type = 3;
int32 uses_remaining = 4;
uint64 pokemon_id = 5; // TODO: Check if is PokemonType
double start_km_walked = 6;
double target_km_walked = 7;
}

View File

@ -0,0 +1,7 @@
syntax = "proto3";
package POGOProtos.Inventory;
enum EggIncubatorType {
INCUBATOR_UNSET = 0;
INCUBATOR_DISTANCE = 1;
}

View File

@ -0,0 +1,8 @@
syntax = "proto3";
package POGOProtos.Inventory;
import "POGOProtos/Inventory/EggIncubator.proto";
message EggIncubators {
repeated .POGOProtos.Inventory.EggIncubator egg_incubator = 1;
}

View File

@ -0,0 +1,10 @@
syntax = "proto3";
package POGOProtos.Inventory;
import "POGOProtos/Inventory/InventoryItem.proto";
message InventoryDelta {
int64 original_timestamp_ms = 1;
int64 new_timestamp_ms = 2;
repeated .POGOProtos.Inventory.InventoryItem inventory_items = 3;
}

View File

@ -0,0 +1,14 @@
syntax = "proto3";
package POGOProtos.Inventory;
import "POGOProtos/Inventory/InventoryItemData.proto";
message InventoryItem {
int64 modified_timestamp_ms = 1;
DeletedItem deleted_item = 2;
.POGOProtos.Inventory.InventoryItemData inventory_item_data = 3;
message DeletedItem {
fixed64 pokemon_id = 1;
}
}

View File

@ -0,0 +1,26 @@
syntax = "proto3";
package POGOProtos.Inventory;
import "POGOProtos/Inventory/Item/ItemData.proto";
import "POGOProtos/Inventory/AppliedItems.proto";
import "POGOProtos/Inventory/EggIncubators.proto";
import "POGOProtos/Inventory/Candy.proto";
import "POGOProtos/Inventory/InventoryUpgrades.proto";
import "POGOProtos/Data/PokemonData.proto";
import "POGOProtos/Data/PokedexEntry.proto";
import "POGOProtos/Data/Player/PlayerStats.proto";
import "POGOProtos/Data/Player/PlayerCurrency.proto";
import "POGOProtos/Data/Player/PlayerCamera.proto";
message InventoryItemData {
.POGOProtos.Data.PokemonData pokemon_data = 1;
.POGOProtos.Inventory.Item.ItemData item = 2;
.POGOProtos.Data.PokedexEntry pokedex_entry = 3;
.POGOProtos.Data.Player.PlayerStats player_stats = 4;
.POGOProtos.Data.Player.PlayerCurrency player_currency = 5;
.POGOProtos.Data.Player.PlayerCamera player_camera = 6;
.POGOProtos.Inventory.InventoryUpgrades inventory_upgrades = 7;
.POGOProtos.Inventory.AppliedItems applied_items = 8;
.POGOProtos.Inventory.EggIncubators egg_incubators = 9;
.POGOProtos.Inventory.Candy candy = 10;
}

View File

@ -0,0 +1,11 @@
syntax = "proto3";
package POGOProtos.Inventory;
import "POGOProtos/Inventory/Item/ItemId.proto";
import "POGOProtos/Inventory/InventoryUpgradeType.proto";
message InventoryUpgrade {
.POGOProtos.Inventory.Item.ItemId item_id = 1;
.POGOProtos.Inventory.InventoryUpgradeType upgrade_type = 2;
int32 additional_storage = 3;
}

View File

@ -0,0 +1,8 @@
syntax = "proto3";
package POGOProtos.Inventory;
enum InventoryUpgradeType {
UPGRADE_UNSET = 0;
INCREASE_ITEM_STORAGE = 1;
INCREASE_POKEMON_STORAGE = 2;
}

View File

@ -0,0 +1,8 @@
syntax = "proto3";
package POGOProtos.Inventory;
import "POGOProtos/Inventory/InventoryUpgrade.proto";
message InventoryUpgrades {
repeated InventoryUpgrade inventory_upgrades = 1;
}

View File

@ -0,0 +1,9 @@
syntax = "proto3";
package POGOProtos.Inventory.Item;
import "POGOProtos/Inventory/Item/ItemId.proto";
message ItemAward {
.POGOProtos.Inventory.Item.ItemId item_id = 1;
int32 item_count = 2;
}

View File

@ -0,0 +1,10 @@
syntax = "proto3";
package POGOProtos.Inventory.Item;
import "POGOProtos/Inventory/Item/ItemId.proto";
message ItemData {
.POGOProtos.Inventory.Item.ItemId item_id = 1;
int32 count = 2;
bool unseen = 3;
}

View File

@ -0,0 +1,35 @@
syntax = "proto3";
package POGOProtos.Inventory.Item;
enum ItemId {
ITEM_UNKNOWN = 0;
ITEM_POKE_BALL = 1;
ITEM_GREAT_BALL = 2;
ITEM_ULTRA_BALL = 3;
ITEM_MASTER_BALL = 4;
ITEM_POTION = 101;
ITEM_SUPER_POTION = 102;
ITEM_HYPER_POTION = 103;
ITEM_MAX_POTION = 104;
ITEM_REVIVE = 201;
ITEM_MAX_REVIVE = 202;
ITEM_LUCKY_EGG = 301;
ITEM_INCENSE_ORDINARY = 401;
ITEM_INCENSE_SPICY = 402;
ITEM_INCENSE_COOL = 403;
ITEM_INCENSE_FLORAL = 404;
ITEM_TROY_DISK = 501;
ITEM_X_ATTACK = 602;
ITEM_X_DEFENSE = 603;
ITEM_X_MIRACLE = 604;
ITEM_RAZZ_BERRY = 701;
ITEM_BLUK_BERRY = 702;
ITEM_NANAB_BERRY = 703;
ITEM_WEPAR_BERRY = 704;
ITEM_PINAP_BERRY = 705;
ITEM_SPECIAL_CAMERA = 801;
ITEM_INCUBATOR_BASIC_UNLIMITED = 901;
ITEM_INCUBATOR_BASIC = 902;
ITEM_POKEMON_STORAGE_UPGRADE = 1001;
ITEM_ITEM_STORAGE_UPGRADE = 1002;
}

View File

@ -0,0 +1,18 @@
syntax = "proto3";
package POGOProtos.Inventory.Item;
enum ItemType {
ITEM_TYPE_NONE = 0;
ITEM_TYPE_POKEBALL = 1;
ITEM_TYPE_POTION = 2;
ITEM_TYPE_REVIVE = 3;
ITEM_TYPE_MAP = 4;
ITEM_TYPE_BATTLE = 5;
ITEM_TYPE_FOOD = 6;
ITEM_TYPE_CAMERA = 7;
ITEM_TYPE_DISK = 8;
ITEM_TYPE_INCUBATOR = 9;
ITEM_TYPE_INCENSE = 10;
ITEM_TYPE_XP_BOOST = 11;
ITEM_TYPE_INVENTORY_UPGRADE = 12;
}

View File

@ -0,0 +1,45 @@
syntax = "proto3";
package POGOProtos.Map.Fort;
import "POGOProtos/Enums/PokemonId.proto";
import "POGOProtos/Enums/TeamColor.proto";
import "POGOProtos/Map/Fort/FortType.proto";
import "POGOProtos/Map/Fort/FortSponsor.proto";
import "POGOProtos/Map/Fort/FortRenderingType.proto";
import "POGOProtos/Map/Fort/FortLureInfo.proto";
message FortData {
string id = 1;
int64 last_modified_timestamp_ms = 2;
double latitude = 3;
double longitude = 4;
bool enabled = 8;
.POGOProtos.Map.Fort.FortType type = 9;
//// Fields related to gyms only
// Team that owns the gym
.POGOProtos.Enums.TeamColor owned_by_team = 5;
// Highest CP Pokemon at the gym
.POGOProtos.Enums.PokemonId guard_pokemon_id = 6;
int32 guard_pokemon_cp = 7;
// Prestigate / experience of the gym
int64 gym_points = 10;
// Whether someone is battling at the gym currently
bool is_in_battle = 11;
//// Fields related to pokestops only
// Timestamp when the pokestop can be activated again to get items / xp
int64 cooldown_complete_timestamp_ms = 14;
.POGOProtos.Map.Fort.FortSponsor sponsor = 15;
.POGOProtos.Map.Fort.FortRenderingType rendering_type = 16;
// Might represent the type of item applied to the pokestop, right now only lures can be applied
bytes active_fort_modifier = 12;
.POGOProtos.Map.Fort.FortLureInfo lure_info = 13;
}

View File

@ -0,0 +1,11 @@
syntax = "proto3";
package POGOProtos.Map.Fort;
import "POGOProtos/Enums/PokemonId.proto";
message FortLureInfo {
string fort_id = 1;
fixed64 encounter_id = 2;
.POGOProtos.Enums.PokemonId active_pokemon_id = 3;
int64 lure_expires_timestamp_ms = 4;
}

View File

@ -0,0 +1,10 @@
syntax = "proto3";
package POGOProtos.Map.Fort;
import "POGOProtos/Inventory/Item/ItemId.proto";
message FortModifier {
.POGOProtos.Inventory.Item.ItemId item_id = 1;
int64 expiration_timestamp_ms = 2;
string deployer_player_codename = 3;
}

View File

@ -0,0 +1,7 @@
syntax = "proto3";
package POGOProtos.Map.Fort;
enum FortRenderingType {
DEFAULT = 0;
INTERNAL_TEST = 1;
}

View File

@ -0,0 +1,8 @@
syntax = "proto3";
package POGOProtos.Map.Fort;
enum FortSponsor {
UNSET_SPONSOR = 0;
MCDONALDS = 1;
POKEMON_STORE = 2;
}

View File

@ -0,0 +1,9 @@
syntax = "proto3";
package POGOProtos.Map.Fort;
message FortSummary {
string fort_summary_id = 1;
int64 last_modified_timestamp_ms = 2;
double latitude = 3;
double longitude = 4;
}

View File

@ -0,0 +1,7 @@
syntax = "proto3";
package POGOProtos.Map.Fort;
enum FortType {
GYM = 0;
CHECKPOINT = 1;
}

View File

@ -0,0 +1,29 @@
syntax = "proto3";
package POGOProtos.Map;
import "POGOProtos/Map/SpawnPoint.proto";
import "POGOProtos/Map/Fort/FortData.proto";
import "POGOProtos/Map/Fort/FortSummary.proto";
import "POGOProtos/Map/Pokemon/NearbyPokemon.proto";
import "POGOProtos/Map/Pokemon/WildPokemon.proto";
import "POGOProtos/Map/Pokemon/MapPokemon.proto";
// A cell is a geographical "zone" containing objects like pokemon, gyms, and pokestops.
message MapCell {
// S2 geographic area that the cell covers (http://s2map.com/) (https://code.google.com/archive/p/s2-geometry-library/)
uint64 s2_cell_id = 1;
int64 current_timestamp_ms = 2;
repeated .POGOProtos.Map.Fort.FortData forts = 3;
repeated .POGOProtos.Map.SpawnPoint spawn_points = 4;
repeated string deleted_objects = 6;
bool is_truncated_list = 7;
repeated .POGOProtos.Map.Fort.FortSummary fort_summaries = 8;
repeated .POGOProtos.Map.SpawnPoint decimated_spawn_points = 9;
// Pokemon within 2 steps or less.
repeated .POGOProtos.Map.Pokemon.WildPokemon wild_pokemons = 5;
// Pokemon within 1 step or none.
repeated .POGOProtos.Map.Pokemon.MapPokemon catchable_pokemons = 10;
// Pokemon farther away than 2 steps, but still in the area.
repeated .POGOProtos.Map.Pokemon.NearbyPokemon nearby_pokemons = 11;
}

View File

@ -0,0 +1,8 @@
syntax = "proto3";
package POGOProtos.Map;
enum MapObjectsStatus {
UNSET_STATUS = 0;
SUCCESS = 1;
LOCATION_UNSET = 2;
}

View File

@ -0,0 +1,14 @@
syntax = "proto3";
package POGOProtos.Map.Pokemon;
import "POGOProtos/Enums/PokemonId.proto";
message MapPokemon {
string spawn_point_id = 1;
fixed64 encounter_id = 2;
.POGOProtos.Enums.PokemonId pokemon_id = 3;
// After this timestamp, the pokemon will be gone.
int64 expiration_timestamp_ms = 4;
double latitude = 5;
double longitude = 6;
}

View File

@ -0,0 +1,10 @@
syntax = "proto3";
package POGOProtos.Map.Pokemon;
import "POGOProtos/Enums/PokemonId.proto";
message NearbyPokemon {
.POGOProtos.Enums.PokemonId pokemon_id = 1;
float distance_in_meters = 2;
fixed64 encounter_id = 3;
}

View File

@ -0,0 +1,14 @@
syntax = "proto3";
package POGOProtos.Map.Pokemon;
import "POGOProtos/Data/PokemonData.proto";
message WildPokemon {
fixed64 encounter_id = 1;
int64 last_modified_timestamp_ms = 2;
double latitude = 3;
double longitude = 4;
string spawn_point_id = 5;
.POGOProtos.Data.PokemonData pokemon_data = 7;
int32 time_till_hidden_ms = 11;
}

View File

@ -0,0 +1,7 @@
syntax = "proto3";
package POGOProtos.Map;
message SpawnPoint {
double latitude = 2;
double longitude = 3;
}

View File

@ -0,0 +1,8 @@
syntax = "proto3";
package POGOProtos.Networking.Envelopes;
message AuthTicket {
bytes start = 1;
uint64 expire_timestamp_ms = 2;
bytes end = 3;
}

View File

@ -0,0 +1,31 @@
syntax = "proto3";
package POGOProtos.Networking.Envelopes;
import "POGOProtos/Networking/Requests/Request.proto";
import "POGOProtos/Networking/Envelopes/AuthTicket.proto";
import "POGOProtos/Networking/Envelopes/Unknown6.proto";
message RequestEnvelope {
int32 status_code = 1;
uint64 request_id = 3;
repeated .POGOProtos.Networking.Requests.Request requests = 4;
repeated .POGOProtos.Networking.Envelopes.Unknown6 unknown6 = 6;
double latitude = 7;
double longitude = 8;
double altitude = 9;
AuthInfo auth_info = 10;
.POGOProtos.Networking.Envelopes.AuthTicket auth_ticket = 11;
int64 unknown12 = 12;
message AuthInfo {
string provider = 1;
JWT token = 2;
message JWT {
string contents = 1;
int32 unknown2 = 2;
}
}
}

View File

@ -0,0 +1,23 @@
syntax = "proto3";
package POGOProtos.Networking.Envelopes;
import "POGOProtos/Networking/Envelopes/AuthTicket.proto";
import "POGOProtos/Networking/Envelopes/Unknown6Response.proto";
message ResponseEnvelope {
int32 status_code = 1;
uint64 request_id = 2;
string api_url = 3;
repeated .POGOProtos.Networking.Envelopes.Unknown6Response unknown6 = 6;
.POGOProtos.Networking.Envelopes.AuthTicket auth_ticket = 7;
repeated bytes returns = 100;
string error = 101;
message Unknown7 {
bytes unknown71 = 1;
int64 unknown72 = 2;
bytes unknown73 = 3;
}
}

View File

@ -0,0 +1,11 @@
syntax = "proto3";
package POGOProtos.Networking.Envelopes;
message Unknown6 {
int32 request_type = 1; // 5 for IAPs, 6 is unknown still
Unknown2 unknown2 = 2;
message Unknown2 {
bytes unknown1 = 1;
}
}

View File

@ -0,0 +1,32 @@
syntax = "proto3";
package POGOProtos.Networking.Envelopes;
import "POGOProtos/Data/Player/Currency.proto";
import "POGOProtos/Inventory/Item/ItemData.proto";
message Unknown6Response {
int32 response_type = 1; // Still don't know what 6 is, but 5 lists items available via IAPs.
Unknown2 unknown2 = 2; // Response data
message Unknown2 {
uint64 unknown1 = 1; // Maybe status? It's always 1 (success), so it's probably that.
repeated StoreItem items = 2; // Items to show in the shop
repeated .POGOProtos.Data.Player.Currency player_currencies = 3; // currencies that player has at the moment
string unknown4 = 4; // Some base64 encoded stuff...
message StoreItem {
string item_id = 1; // Internal ID (probably for Google Play/App Store) example: "pgorelease.incenseordinary.1"
bool is_iap = 2; // If true, this item is bought with real currency (USD, etc.) through the Play/App Store instead of Pokecoins
.POGOProtos.Data.Player.Currency currency_to_buy = 3; // This defines how much the item costs (with the exception of items that cost real money like Pokecoins, that's defined in the respective store)
.POGOProtos.Data.Player.Currency yields_currency = 4; // When bought, this IAP will yield this much currency
.POGOProtos.Inventory.Item.ItemData yields_item = 5; // The item and count of such item that this IAP will yield
repeated Tag tags = 6; // Stuff like SORT:12, CATEGORY:ITEMS
int32 unknown7 = 7; // Possibly something to toggle visibility in the store/purchasibility?
message Tag {
string key = 1;
string value = 2;
}
}
}
}

View File

@ -0,0 +1,11 @@
syntax = "proto3";
package POGOProtos.Networking.Requests.Messages;
import "POGOProtos/Inventory/Item/ItemId.proto";
message AddFortModifierMessage {
.POGOProtos.Inventory.Item.ItemId modifier_type = 1;
string fort_id = 2;
double player_latitude = 3;
double player_longitude = 4;
}

View File

@ -0,0 +1,13 @@
syntax = "proto3";
package POGOProtos.Networking.Requests.Messages;
import "POGOProtos/Data/Battle/BattleAction.proto";
message AttackGymMessage {
string gym_id = 1;
string battle_id = 2;
repeated .POGOProtos.Data.Battle.BattleAction attack_actions = 3;
.POGOProtos.Data.Battle.BattleAction last_retrieved_actions = 4;
double player_latitude = 5;
double player_longitude = 6;
}

View File

@ -0,0 +1,14 @@
syntax = "proto3";
package POGOProtos.Networking.Requests.Messages;
import "POGOProtos/Inventory/Item/ItemId.proto";
message CatchPokemonMessage {
fixed64 encounter_id = 1;
.POGOProtos.Inventory.Item.ItemId pokeball = 2;
double normalized_reticle_size = 3;
string spawn_point_id = 4;
bool hit_pokemon = 5;
double spin_modifier = 6;
double normalized_hit_position = 7;
}

View File

@ -0,0 +1,6 @@
syntax = "proto3";
package POGOProtos.Networking.Requests.Messages;
message CheckAwardedBadgesMessage {
// No message needed.
}

View File

@ -0,0 +1,6 @@
syntax = "proto3";
package POGOProtos.Networking.Requests.Messages;
message CheckCodenameAvailableMessage {
string codename = 1;
}

View File

@ -0,0 +1,6 @@
syntax = "proto3";
package POGOProtos.Networking.Requests.Messages;
message ClaimCodenameMessage {
string codename = 1;
}

View File

@ -0,0 +1,6 @@
syntax = "proto3";
package POGOProtos.Networking.Requests.Messages;
message CollectDailyBonusMessage {
// No message needed.
}

View File

@ -0,0 +1,6 @@
syntax = "proto3";
package POGOProtos.Networking.Requests.Messages;
message CollectDailyDefenderBonusMessage {
// No message needed.
}

View File

@ -0,0 +1,9 @@
syntax = "proto3";
package POGOProtos.Networking.Requests.Messages;
message DiskEncounterMessage {
uint64 encounter_id = 1;
string fort_id = 2;
double player_latitude = 3;
double player_longitude = 4;
}

View File

@ -0,0 +1,6 @@
syntax = "proto3";
package POGOProtos.Networking.Requests.Messages;
message DownloadItemTemplatesMessage {
// No message needed.
}

View File

@ -0,0 +1,12 @@
syntax = "proto3";
package POGOProtos.Networking.Requests.Messages;
import "POGOProtos/Enums/Platform.proto";
message DownloadRemoteConfigVersionMessage {
.POGOProtos.Enums.Platform platform = 1;
string device_manufacturer = 2;
string device_model = 3;
string locale = 4;
uint32 app_version = 5;
}

View File

@ -0,0 +1,6 @@
syntax = "proto3";
package POGOProtos.Networking.Requests.Messages;
message DownloadSettingsMessage {
string hash = 1;
}

View File

@ -0,0 +1,6 @@
syntax = "proto3";
package POGOProtos.Networking.Requests.Messages;
message EchoMessage {
// No message needed.
}

View File

@ -0,0 +1,9 @@
syntax = "proto3";
package POGOProtos.Networking.Requests.Messages;
message EncounterMessage {
fixed64 encounter_id = 1;
string spawn_point_id = 2;
double player_latitude = 3;
double player_longitude = 4;
}

View File

@ -0,0 +1,8 @@
syntax = "proto3";
package POGOProtos.Networking.Requests.Messages;
import "POGOProtos/Enums/PokemonId.proto";
message EncounterTutorialCompleteMessage {
.POGOProtos.Enums.PokemonId pokemon_id = 1;
}

View File

@ -0,0 +1,8 @@
syntax = "proto3";
package POGOProtos.Networking.Requests.Messages;
import "POGOProtos/Enums/BadgeType.proto";
message EquipBadgeMessage {
.POGOProtos.Enums.BadgeType badge_type = 1;
}

View File

@ -0,0 +1,6 @@
syntax = "proto3";
package POGOProtos.Networking.Requests.Messages;
message EvolvePokemonMessage {
fixed64 pokemon_id = 1;
}

Some files were not shown because too many files have changed in this diff Show More