Skip to content

Commit

Permalink
Add Pokémon level to front-end + save cp_multiplier to DB & send it t…
Browse files Browse the repository at this point in the history
…o webhooks. (#1991)

* Add cp_multiplier

* Update webhook.py

* Update models.py

* Update models.py

* Update models.py

* Update utils.py

* Update webhook.py

* Update models.py

* Update models.py

* Update utils.py

* Update map.js

* Update map.js

* Update map.js

* Update models.py

* Update models.py

* Update map.js

* Update map.js

* Update map.js

* Update models.py

* Update models.py

* Update models.py

* Update models.py

* better checking

* Update models.py

* Shouldn't have deleted that resolving conflict
  • Loading branch information
tallypokemap authored and sebastienvercammen committed May 16, 2017
1 parent a03c1fa commit 272c6a0
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 5 deletions.
20 changes: 18 additions & 2 deletions pogom/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
from .utils import (get_pokemon_name, get_pokemon_rarity, get_pokemon_types,
get_args, cellid, in_radius, date_secs, clock_between,
get_move_name, get_move_damage, get_move_energy,
get_move_type, clear_dict_response)
get_move_type, clear_dict_response, calc_pokemon_level)
from .transform import transform_from_wgs_to_gcj, get_new_coords
from .customLog import printPokemon

Expand All @@ -42,7 +42,7 @@
flaskDb = FlaskDB()
cache = TTLCache(maxsize=100, ttl=60 * 5)

db_schema_version = 18
db_schema_version = 19


class MyRetryDB(RetryOperationalError, PooledMySQLDatabase):
Expand Down Expand Up @@ -107,6 +107,7 @@ class Pokemon(BaseModel):
move_1 = SmallIntegerField(null=True)
move_2 = SmallIntegerField(null=True)
cp = SmallIntegerField(null=True)
cp_multiplier = FloatField(null=True)
weight = FloatField(null=True)
height = FloatField(null=True)
gender = SmallIntegerField(null=True)
Expand Down Expand Up @@ -2064,6 +2065,7 @@ def parse_map(args, map_dict, step_location, db_update_queue, wh_update_queue,
'move_1': None,
'move_2': None,
'cp': None,
'cp_multiplier': None,
'height': None,
'weight': None,
'gender': p['pokemon_data']['pokemon_display']['gender'],
Expand Down Expand Up @@ -2111,6 +2113,9 @@ def parse_map(args, map_dict, step_location, db_update_queue, wh_update_queue,
# Only add CP if we're level 30+.
if encounter_level >= 30:
pokemon[p['encounter_id']]['cp'] = cp
pokemon[p['encounter_id']][
'cp_multiplier'] = pokemon_info.get(
'cp_multiplier', None)

if args.webhooks:
if (pokemon_id in args.webhook_whitelist or
Expand All @@ -2128,6 +2133,11 @@ def parse_map(args, map_dict, step_location, db_update_queue, wh_update_queue,
'spawn_end': start_end[1],
'player_level': encounter_level
})
if wh_poke['cp_multiplier'] is not None:
wh_poke.update({
'pokemon_level': calc_pokemon_level(
wh_poke['cp_multiplier'])
})
wh_update_queue.put(('pokemon', wh_poke))

if forts and (config['parse_pokestops'] or config['parse_gyms']):
Expand Down Expand Up @@ -2882,5 +2892,11 @@ def database_migrate(db, old_ver):
SmallIntegerField(null=True))
)

if old_ver < 19:
migrate(
migrator.add_column('pokemon', 'cp_multiplier',
FloatField(null=True))
)

# Always log that we're done.
log.info('Schema upgrade complete.')
10 changes: 10 additions & 0 deletions pogom/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -944,3 +944,13 @@ def clear_dict_response(response, keep_inventory=False):
if 'GET_BUDDY_WALKED' in response['responses']:
del response['responses']['GET_BUDDY_WALKED']
return response


def calc_pokemon_level(cp_multiplier):
if cp_multiplier < 0.734:
pokemon_level = (58.35178527 * cp_multiplier * cp_multiplier -
2.838007664 * cp_multiplier + 0.8539209906)
else:
pokemon_level = 171.0112688 * cp_multiplier - 95.20425243
pokemon_level = int((round(pokemon_level) * 2) / 2)
return pokemon_level
2 changes: 1 addition & 1 deletion pogom/webhook.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ def __get_key_fields(whtype):
'pokemon': ['spawnpoint_id', 'pokemon_id', 'latitude', 'longitude',
'disappear_time', 'move_1', 'move_2',
'individual_stamina', 'individual_defense',
'individual_attack', 'form', 'cp'],
'individual_attack', 'form', 'cp', 'pokemon_level'],
'gym': ['team_id', 'guard_pokemon_id',
'gym_points', 'enabled', 'latitude', 'longitude'],
'gym_details': ['latitude', 'longitude', 'team', 'pokemon']
Expand Down
18 changes: 16 additions & 2 deletions static/js/map.js
Original file line number Diff line number Diff line change
Expand Up @@ -426,6 +426,7 @@ function pokemonLabel(item) {
var gender = item['gender']
var form = item['form']
var cp = item['cp']
var cpMultiplier = item['cp_multiplier']

$.each(types, function (index, type) {
typesDisplay += getTypeSpan(type)
Expand All @@ -440,10 +441,11 @@ function pokemonLabel(item) {
</div>
`

if (cp !== null) {
if (cp !== null && cpMultiplier !== null) {
var pokemonLevel = getPokemonLevel(cpMultiplier)
details += `
<div>
CP: ${cp}
CP: ${cp} | Level: ${pokemonLevel}
</div>
`
}
Expand Down Expand Up @@ -702,6 +704,18 @@ function getIv(atk, def, stm) {
return false
}

function getPokemonLevel(cpMultiplier) {
if (cpMultiplier < 0.734) {
var pokemonLevel = (58.35178527 * cpMultiplier * cpMultiplier -
2.838007664 * cpMultiplier + 0.8539209906)
} else {
pokemonLevel = 171.0112688 * cpMultiplier - 95.20425243
}
pokemonLevel = (Math.round(pokemonLevel) * 2) / 2

return pokemonLevel
}

function lpad(str, len, padstr) {
return Array(Math.max(len - String(str).length + 1, 0)).join(padstr) + str
}
Expand Down

0 comments on commit 272c6a0

Please sign in to comment.