--- /dev/null
+# encoding: utf8
+"""Faithful translations of calculations the games make."""
+
+def calculated_stat(base_stat, level, iv, effort):
+ """Returns the calculated stat -- i.e. the value actually shown in the game
+ on a Pokémon's status tab.
+ """
+
+ # Remember: this is from C; use floor division!
+ return (base_stat * 2 + iv + effort // 4) * level // 100 + 5
+
+def calculated_hp(base_hp, level, iv, effort):
+ """Similar to `calculated_stat`, except with a slightly different formula
+ used specifically for HP.
+ """
+
+ # Shedinja's base stat of 1 is special; its HP is always 1
+ if base_hp == 1:
+ return 1
+
+ return (base_hp * 2 + iv + effort // 4) * level // 100 + 10 + level