diff --git a/data/level_to_cpm.json b/data/level_to_cpm.json index be0d57b3f9..0d7ee6b298 100644 --- a/data/level_to_cpm.json +++ b/data/level_to_cpm.json @@ -1,82 +1,81 @@ -{ - "1": 0.094, - "1.5": 0.135137432, - "2": 0.16639787, - "2.5": 0.192650919, - "3": 0.21573247, - "3.5": 0.236572661, - "4": 0.25572005, - "4.5": 0.273530381, - "5": 0.29024988, - "5.5": 0.306057377, - "6": 0.3210876, - "6.5": 0.335445036, - "7": 0.34921268, - "7.5": 0.362457751, - "8": 0.37523559, - "8.5": 0.387592406, - "9": 0.39956728, - "9.5": 0.411193551, - "10": 0.42250001, - "10.5": 0.432926419, - "11": 0.44310755, - "11.5": 0.4530599578, - "12": 0.46279839, - "12.5": 0.472336083, - "13": 0.48168495, - "13.5": 0.4908558, - "14": 0.49985844, - "14.5": 0.508701765, - "15": 0.51739395, - "15.5": 0.525942511, - "16": 0.53435433, - "16.5": 0.542635767, - "17": 0.55079269, - "17.5": 0.558830576, - "18": 0.56675452, - "18.5": 0.574569153, - "19": 0.58227891, - "19.5": 0.589887917, - "20": 0.59740001, - "20.5": 0.604818814, - "21": 0.61215729, - "21.5": 0.619399365, - "22": 0.62656713, - "22.5": 0.633644533, - "23": 0.64065295, - "23.5": 0.647576426, - "24": 0.65443563, - "24.5": 0.661214806, - "25": 0.667934, - "25.5": 0.674577537, - "26": 0.68116492, - "26.5": 0.687680648, - "27": 0.69414365, - "27.5": 0.700538673, - "28": 0.70688421, - "28.5": 0.713164996, - "29": 0.71939909, - "29.5": 0.725571552, - "30": 0.7317, - "30.5": 0.734741009, - "31": 0.73776948, - "31.5": 0.740785574, - "32": 0.74378943, - "32.5": 0.746781211, - "33": 0.74976104, - "33.5": 0.752729087, - "34": 0.75568551, - "34.5": 0.758630378, - "35": 0.76156384, - "35.5": 0.764486065, - "36": 0.76739717, - "36.5": 0.770297266, - "37": 0.7731865, - "37.5": 0.776064962, - "38": 0.77893275, - "38.5": 0.781790055, - "39": 0.78463697, - "39.5": 0.787473578, - "40": 0.79030001, - "40.5": 0.7931163849 -} \ No newline at end of file +[ +0.094, +0.135137432, +0.16639787, +0.192650919, +0.21573247, +0.236572661, +0.25572005, +0.273530381, +0.29024988, +0.306057377, +0.3210876, +0.335445036, +0.34921268, +0.362457751, +0.37523559, +0.387592406, +0.39956728, +0.411193551, +0.42250001, +0.432926419, +0.44310755, +0.4530599578, +0.46279839, +0.472336083, +0.48168495, +0.4908558, +0.49985844, +0.508701765, +0.51739395, +0.525942511, +0.53435433, +0.542635767, +0.55079269, +0.558830576, +0.56675452, +0.574569153, +0.58227891, +0.589887917, +0.59740001, +0.604818814, +0.61215729, +0.619399365, +0.62656713, +0.633644533, +0.64065295, +0.647576426, +0.65443563, +0.661214806, +0.667934, +0.674577537, +0.68116492, +0.687680648, +0.69414365, +0.700538673, +0.70688421, +0.713164996, +0.71939909, +0.725571552, +0.7317, +0.734741009, +0.73776948, +0.740785574, +0.74378943, +0.746781211, +0.74976104, +0.752729087, +0.75568551, +0.758630378, +0.76156384, +0.764486065, +0.76739717, +0.770297266, +0.7731865, +0.776064962, +0.77893275, +0.781790055, +0.78463697, +0.787473578, +0.79030001 +] diff --git a/data/pokemon_upgrade_cost.json b/data/pokemon_upgrade_cost.json index df49c94223..acb7b1ff4b 100644 --- a/data/pokemon_upgrade_cost.json +++ b/data/pokemon_upgrade_cost.json @@ -76,7 +76,5 @@ [12, 9000], [12, 9000], [15, 10000], -[15, 10000], -[15, 10000], [15, 10000] ] diff --git a/pokemongo_bot/inventory.py b/pokemongo_bot/inventory.py index f793d4f098..9bd6d2c052 100644 --- a/pokemongo_bot/inventory.py +++ b/pokemongo_bot/inventory.py @@ -584,8 +584,6 @@ class LevelToCPm(_StaticInventoryComponent): STATIC_DATA_FILE = os.path.join(_base_dir, 'data', 'level_to_cpm.json') MAX_LEVEL = 40 MAX_CPM = .0 - # half of the lowest difference between CPMs - HALF_DIFF_BETWEEN_HALF_LVL = 14e-3 @classmethod def init_static_data(cls): @@ -595,19 +593,11 @@ def init_static_data(cls): @classmethod def cp_multiplier_for(cls, level): - # type: (Union[float, int, string]) -> float - level = float(level) - level = str(int(level) if level.is_integer() else level) - return cls.STATIC_DATA[level] + return cls.STATIC_DATA[int(2 * (level - 1))] @classmethod def level_from_cpm(cls, cp_multiplier): - # type: (float) -> float - for lvl, cpm in cls.STATIC_DATA.iteritems(): - diff = abs(cpm - cp_multiplier) - if diff <= cls.HALF_DIFF_BETWEEN_HALF_LVL: - return float(lvl) - raise ValueError("Unknown cp_multiplier: {}".format(cp_multiplier)) + return min(range(len(cls.STATIC_DATA)), key=lambda i: abs(cls.STATIC_DATA[i] - cp_multiplier)) * 0.5 + 1 class _Attacks(_StaticInventoryComponent): diff --git a/tests/inventory_test.py b/tests/inventory_test.py index 40b3734207..656641b7ca 100644 --- a/tests/inventory_test.py +++ b/tests/inventory_test.py @@ -122,7 +122,7 @@ def test_pokemons(self): "cp_multiplier": 0.4627983868122101, "additional_cp_multiplier": 0.018886566162109375, "cp": 653, "nickname": "Golb", "id": 13632861873471324}) - self.assertEqual(poke.level, 12.5) + self.assertEqual(poke.level, 13) self.assertEqual(poke.iv, 0.47) self.assertAlmostEqual(poke.ivcp, 0.488747515) self.assertAlmostEqual(poke.static.max_cp, 1921.34561459) @@ -141,7 +141,7 @@ def test_pokemons(self): "move_1": 221, "move_2": 129, "pokemon_id": 19, "cp": 106, "individual_attack": 6, "stamina_max": 22, "individual_defense": 14, "cp_multiplier": 0.37523558735847473, "id": 7841053399}) - self.assertEqual(poke.level, 7.5) + self.assertEqual(poke.level, 8) self.assertEqual(poke.iv, 0.44) self.assertAlmostEqual(poke.ivcp, 0.3804059) self.assertAlmostEqual(poke.static.max_cp, 581.64643575) @@ -162,14 +162,11 @@ def test_levels_to_cpm(self): max_cpm = l2c.cp_multiplier_for(l2c.MAX_LEVEL) self.assertEqual(l2c.MAX_LEVEL, 40) self.assertEqual(l2c.MAX_CPM, max_cpm) - self.assertEqual(len(l2c.STATIC_DATA), 80) + self.assertEqual(len(l2c.STATIC_DATA), 79) - self.assertEqual(l2c.cp_multiplier_for("1"), 0.094) self.assertEqual(l2c.cp_multiplier_for(1), 0.094) self.assertEqual(l2c.cp_multiplier_for(1.0), 0.094) - self.assertEqual(l2c.cp_multiplier_for("17.5"), 0.558830576) self.assertEqual(l2c.cp_multiplier_for(17.5), 0.558830576) - self.assertEqual(l2c.cp_multiplier_for('40.0'), 0.79030001) self.assertEqual(l2c.cp_multiplier_for(40.0), 0.79030001) self.assertEqual(l2c.cp_multiplier_for(40), 0.79030001)