From poccil, on Smogon University.
Apparently, the formula involves powers to the 2.5, which are really strange.
Exp. Points = (sqrt(X)*(X*X))*Z/(sqrt(Y)*(Y*Y))+1
- X = opponent's level + opponent's level + 10
- Y = opponent's level + participant's level + 10
- Z = (opponent's base experience * opponent's level / 5), rounded down. If this is a Trainer battle, Z is multiplied by 1.5 and rounded down. Then, if at least one Pokémon in the player's party is holding Exp. Share, Z is halved and rounded up. Z is then divided evenly, rounded down, among all participants, and again among all Pokémon in the player's party holding Exp. Share. (Thus a Pokémon can earn more Exp. Points both by being a participant and by holding Exp. Share.)
- "sqrt(N)" means "the square root of N". The result of the square root function is not rounded and is accurate to the nearest 1/4096.
If a Pokémon has a different 32-bit Trainer ID and/or OT name from the player's, the experience it earns is multiplied by 1.5, or if it also comes from a different language version from the player's, by 6963/4096, and rounded to the nearest whole number. If the Pokémon is holding Lucky Egg, the experience it earns is multiplied by 1.5 and rounded to the nearest whole number. If the player received the "Exp. Point Power" from another player, and that power is active, the experience the Pokemon earns is multiplied by the following ratios and rounded down:
Power ↓: 50/100; Power ↓↓: 66/100; Power ↓↓↓: 80/100; Power ↑: 120/100; Power ↑↑: 150/100; Power ↑↑↑, Power S, Power MAX: 200/100.
Here's the formula, ready for placing onto Bulbapedia:
(Note: This formula does not include the EXP. Power thing that poccil was talking about.)
We'll also have to update the EXP. example, and the fact that the maximum is not 1,581,409 as predicted with the old formula but instead 228,985. Any news on when server stress will be going down?