syntax = "proto3";
package POGOProtos.Settings.Master;

import public "POGOProtos.Data.Player.proto";
import public "POGOProtos.Enums.proto";
import public "POGOProtos.Data.Badge.proto";
import public "POGOProtos.Settings.Master.Pokemon.proto";
import public "POGOProtos.Inventory.Item.proto";
import public "POGOProtos.Settings.Master.Item.proto";
import public "POGOProtos.Settings.Master.Quest.proto";

message AvatarCustomizationSettings {
	bool enabled = 1;
	.POGOProtos.Data.Player.PlayerAvatarType avatar_type = 2;
	repeated .POGOProtos.Enums.Slot slot = 3;
	string bundle_name = 4;
	string asset_name = 5;
	string group_name = 6;
	int32 sort_order = 7;
	AvatarCustomizationUnlockType unlock_type = 8;
	repeated AvatarCustomizationPromoType promo_type = 9;
	.POGOProtos.Enums.BadgeType unlock_badge_type = 10;
	string iap_sku = 11;
	int32 unlock_badge_level = 12;
	string icon_name = 13;
	int32 unlock_player_level = 14;

	enum AvatarCustomizationPromoType {
		UNSET_PROMO_TYPE = 0;
		SALE = 1;
		FEATURED = 2;
	}

	enum AvatarCustomizationUnlockType {
		UNSET_UNLOCK_TYPE = 0;
		DEFAULT = 1;
		MEDAL_REWARD = 2;
		IAP_CLOTHING = 3;
		LEVEL_REWARD = 4;
	}
}
message BadgeSettings {
	.POGOProtos.Enums.BadgeType badge_type = 1;
	int32 badge_rank = 2;
	repeated int32 targets = 3;
	repeated .POGOProtos.Data.Badge.BadgeCaptureReward capture_reward = 4;
}
message CameraSettings {
	string next_camera = 1;
	repeated .POGOProtos.Enums.CameraInterpolation interpolation = 2;
	repeated .POGOProtos.Enums.CameraTarget target_type = 3;
	repeated float ease_in_speed = 4;
	repeated float ease_out_speed = 5;
	repeated float duration_seconds = 6;
	repeated float wait_seconds = 7;
	repeated float transition_seconds = 8;
	repeated float angle_degree = 9;
	repeated float angle_offset_degree = 10;
	repeated float pitch_degree = 11;
	repeated float pitch_offset_degree = 12;
	repeated float roll_degree = 13;
	repeated float distance_meters = 14;
	repeated float height_percent = 15;
	repeated float vert_ctr_ratio = 16;
}
message EncounterSettings {
	float spin_bonus_threshold = 1;
	float excellent_throw_threshold = 2;
	float great_throw_threshold = 3;
	float nice_throw_threshold = 4;
	int32 milestone_threshold = 5;
}
message EquippedBadgeSettings {
	int64 equip_badge_cooldown_ms = 1;
	repeated float catch_probability_bonus = 2;
	repeated float flee_probability_bonus = 3;
}
message FormSettings {
	.POGOProtos.Enums.PokemonId pokemon = 1;
	repeated Form forms = 2;

	message Form {
		.POGOProtos.Enums.Form form = 1;
		int32 asset_bundle_value = 2;
	}
}
message GenderSettings {
	.POGOProtos.Enums.PokemonId pokemon = 1;
	.POGOProtos.Settings.Master.Pokemon.PokemonGenderSettings gender = 2;
}
message GymBattleSettings {
	float energy_per_sec = 1;
	float dodge_energy_cost = 2;
	float retarget_seconds = 3;
	float enemy_attack_interval = 4;
	float attack_server_interval = 5;
	float round_duration_seconds = 6;
	float bonus_time_per_ally_seconds = 7;
	int32 maximum_attackers_per_battle = 8;
	float same_type_attack_bonus_multiplier = 9;
	int32 maximum_energy = 10;
	float energy_delta_per_health_lost = 11;
	int32 dodge_duration_ms = 12;
	int32 minimum_player_level = 13;
	int32 swap_duration_ms = 14;
	float dodge_damage_reduction_percent = 15;
}
message GymLevelSettings {
	repeated int32 required_experience = 1;
	repeated int32 leader_slots = 2;
	repeated int32 trainer_slots = 3;
	repeated int32 search_roll_bonus = 4;
}
message IapItemDisplay {
	string sku = 1;
	.POGOProtos.Enums.HoloIapItemCategory category = 2;
	int32 sort_order = 3;
	repeated .POGOProtos.Inventory.Item.ItemId item_ids = 4;
	repeated int32 counts = 5;
}
message IapSettings {
	int32 daily_bonus_coins = 1;
	repeated int32 daily_defender_bonus_per_pokemon = 2;
	int32 daily_defender_bonus_max_defenders = 3;
	repeated string daily_defender_bonus_currency = 4;
	int64 min_time_between_claims_ms = 5;
	bool daily_bonus_enabled = 6;
	bool daily_defender_bonus_enabled = 7;
}
message ItemSettings {
	.POGOProtos.Inventory.Item.ItemId item_id = 1;
	.POGOProtos.Inventory.Item.ItemType item_type = 2;
	.POGOProtos.Enums.ItemCategory category = 3;
	float drop_freq = 4;
	int32 drop_trainer_level = 5;

	// One of the below attributes will be set in the response, the others will be null.

	.POGOProtos.Settings.Master.Item.PokeballAttributes pokeball = 6;
	.POGOProtos.Settings.Master.Item.PotionAttributes potion = 7;
	.POGOProtos.Settings.Master.Item.ReviveAttributes revive = 8;
	.POGOProtos.Settings.Master.Item.BattleAttributes battle = 9;
	.POGOProtos.Settings.Master.Item.FoodAttributes food = 10;
	.POGOProtos.Settings.Master.Item.InventoryUpgradeAttributes inventory_upgrade = 11;
	.POGOProtos.Settings.Master.Item.ExperienceBoostAttributes xp_boost = 12;
	.POGOProtos.Settings.Master.Item.IncenseAttributes incense = 13;
	.POGOProtos.Settings.Master.Item.EggIncubatorAttributes egg_incubator = 14;
	.POGOProtos.Settings.Master.Item.FortModifierAttributes fort_modifier = 15;
}
message MoveSequenceSettings {
	repeated string sequence = 1;
}
message MoveSettings {
	.POGOProtos.Enums.PokemonMove movement_id = 1;
	int32 animation_id = 2;
	.POGOProtos.Enums.PokemonType pokemon_type = 3;
	float power = 4;
	float accuracy_chance = 5;
	float critical_chance = 6;
	float heal_scalar = 7;
	float stamina_loss_scalar = 8;
	int32 trainer_level_min = 9;
	int32 trainer_level_max = 10;
	string vfx_name = 11;
	int32 duration_ms = 12;
	int32 damage_window_start_ms = 13;
	int32 damage_window_end_ms = 14;
	int32 energy_delta = 15;
}
message PlayerLevelSettings {
	repeated int32 rank_num = 1;
	repeated int32 required_experience = 2;
	repeated float cp_multiplier = 3;
	int32 max_egg_player_level = 4;
	int32 max_encounter_player_level = 5;
}
message PokemonSettings {
	.POGOProtos.Enums.PokemonId pokemon_id = 1;
	float model_scale = 3;
	.POGOProtos.Enums.PokemonType type = 4;
	.POGOProtos.Enums.PokemonType type_2 = 5;
	.POGOProtos.Settings.Master.Pokemon.CameraAttributes camera = 6;
	.POGOProtos.Settings.Master.Pokemon.EncounterAttributes encounter = 7;
	.POGOProtos.Settings.Master.Pokemon.StatsAttributes stats = 8;
	repeated .POGOProtos.Enums.PokemonMove quick_moves = 9;
	repeated .POGOProtos.Enums.PokemonMove cinematic_moves = 10;
	repeated float animation_time = 11;
	repeated .POGOProtos.Enums.PokemonId evolution_ids = 12;
	int32 evolution_pips = 13;
	.POGOProtos.Enums.PokemonRarity rarity = 14;
	float pokedex_height_m = 15;
	float pokedex_weight_kg = 16;
	.POGOProtos.Enums.PokemonId parent_pokemon_id = 17;
	float height_std_dev = 18;
	float weight_std_dev = 19;
	float km_distance_to_hatch = 20;
	.POGOProtos.Enums.PokemonFamilyId family_id = 21;
	int32 candy_to_evolve = 22;
	float km_buddy_distance = 23;
	.POGOProtos.Settings.Master.PokemonSettings.BuddySize buddy_size = 24;
	float model_height = 25;
	repeated .POGOProtos.Settings.Master.Pokemon.EvolutionBranch evolution_branch = 26;

	enum BuddySize {
		BUDDY_MEDIUM = 0;
		BUDDY_SHOULDER = 1;
		BUDDY_BIG = 2;
		BUDDY_FLYING = 3;
		BUDDY_BABY = 4;
	}
}
message PokemonUpgradeSettings {
	int32 upgrades_per_level = 1;
	int32 allowed_levels_above_player = 2;
	repeated int32 candy_cost = 3;
	repeated int32 stardust_cost = 4;
}
message QuestSettings {
	.POGOProtos.Enums.QuestType quest_type = 1;
	.POGOProtos.Settings.Master.Quest.DailyQuestSettings daily_quest = 2;
}
message TypeEffectiveSettings {
	repeated float attack_scalar = 1;
	.POGOProtos.Enums.PokemonType attack_type = 2;
}
