Game Master

Schema pogo_gm: names and combat data from the Game Master. IDs are stable integers from the game. Names are citext with collation C.

Identifier tables

Table Key Name column Notes
pokemon pokemon_id pokemon_name Species
forms form_id form_name, form_suffix form_id 0 is the default form
form_group group_id group_suffix Form group for filters
costumes costume_id costume_name, costume_basename is_noevolve is true when the name ends with _NOEVOLVE
families family_id family_name Evolution family
types type_id type_name Element type
moves move_id move_name Fast or charge move
weather weather_id weather_name Weather
items item_id item_name Inventory item
quest_types quest_type_id quest_type_name Field research type
quest_reward_types quest_reward_type_id quest_reward_type_name Reward variant (sub_v2_quest_rewards.type)

forms.form_suffix is the part after the species, for example ALOLA in VULPIX_ALOLA. forms.form_group_id points at form_group.

Combat tables

Parent row: pokemon_templates (pokemon_id, form_id).

Columns include type_id, type2_id, family_id, base_attack, base_defense, base_stamina, pokedex_height, pokedex_weight, height_std_dev, weight_std_dev, and shiny_possible.

pokemon_types

One row per type on a template. secondary is false for the first type.

pokemon_moves

One row per move slot on a template. move_type is quick or cinematic.

pokemon_gender

Male, female, and genderless percents. On a normal template they add to 1.0.

pokemon_forms

Flags for a species and form pair. is_costume is true when the form is a costume form.

type_effective

Damage multiplier attack_scalar, keyed by (attack_type_id, target_type_id).

weather_affinities

Weather ID and type ID pairs. A spawn of that type is boosted in that weather.

evolution_branches

Directed edges between templates, keyed by from-species, from-form, to-species, and to-form. gender_requirement can restrict the edge.

pokemon_allowed_costume_evolutions

Costumes that can evolve for a given template.

Level tables

level_scaling has integer levels and candy or stardust costs for regular, lucky, shadow, and purified Pokémon.

level_cp_multiplier has level as numeric(3,1) and cp_multiplier. Use it for CP math; candy cost lives on level_scaling.

Version

Singleton: batch_id, proto_semver, client_app_version, modified. Same batch_id can be republished; modified always changes. Notify: cuno_wake_pogo_gm. Listener procedure.

Example: name join

SELECT p.pokemon_name, f.form_suffix, t.base_attack
FROM pogo_gm.pokemon_templates AS t
JOIN pogo_gm.pokemon AS p USING (pokemon_id)
JOIN pogo_gm.forms AS f USING (form_id)
WHERE p.pokemon_name = 'VULPIX';