• Follow our Instagram!
  • Curious about what we're currently doing about bots? Check out the latest updates from staff in this thread.

PS! Pokémon Showdown Damage Calculator

Hi, I noticed a bug with the item Metronome in Generation IV. There are two different parameters relative to this item that may be changed by togglin(Never, once, twice, 3 times, ...) but they seem to be uneffective.
bumping this post. seems to only be a problem in DPP with the toggle not actually changing the damage output. additionally, the base toggle w/o metronome (never, once, twice, etc.) also doesn't seem to have any affect on the calc's damage output
 
Found a bug; not sure if it's a bug with showdown itself or the calculator. In the champions calculator, a Garchomp with Jolly and 32 points in speed; but lowered by one stage, is 111. In practice, on the showdown ladder, it's actually 112.
 
Hi i noticed Nightmare isnt listed on showdown calculator https://calc.pokemonshowdown.com/index.html?gen=2 i think it would be good to implement considering how often nightmare can play in a gsc game since sleep and rest talk is good in this . is there any way to implement nightmare damage on the calc? considering it acts at the end of the turn and deals 1/4 of the opponent pokemon max hp. And if bad dreams can work on the calc why nightmare cant
 
Last edited:
Hello! I'm like 95% confident that the damage calculator for ss random battles uses the same info for singles and doubles. Like exact same level, items, and movepools.
Briefly looking into the data that we use for the random battles sets for the damage calculator, I noticed that all of the sets for every Pokemon are the same. Not just in our damage calculator, but in the data we pull from. I wrote a Python script (whose source I have written in this post) and tested whether the sets in our data entirely match between the two formats.

Python:
import json

format1 = 'gen8randombattle.json'
format2 = 'gen8randomdoublesbattle.json'

print(f'Comparing {format1} with {format2}')

setequality = []

with open(format1) as f1:
    sets1: dict[str, dict] = json.load(f1)
    with open(format2) as f2:
        sets2: dict[str, dict] = json.load(f2)

        for mon in sets1.keys():
            if mon in sets2:
                equal = sets1[mon] == sets2[mon]
                # print(f'{mon:20} {equal}')

                setequality.append(equal)

print(f'Are all sets equal:  {all(setequality)}')

Running this script on the Gen 9 formats gets us...

1783215559942.png


...the expected result.

Running this script on the Gen 8 formats gets us...

1783215628934.png


...something that validates your post.

Let's look at how sets are generated for Gen 9 random battles formats:

1783215685385.png


It looks like there are sets for the random battle and the random doubles battle formats.

What about for Gen 8 random battles?

1783215775569.png


It looks like it doesn't have sets for Gen 8 random doubles battle formats. Maybe what happens is that for Gen 8 random doubles battles, it just uses the same sets as for Gen 8 random battles. Maybe A Cake Wearing A Hat could correct anything about my post if it's incorrect.
 
Briefly looking into the data that we use for the random battles sets for the damage calculator, I noticed that all of the sets for every Pokemon are the same. Not just in our damage calculator, but in the data we pull from. I wrote a Python script (whose source I have written in this post) and tested whether the sets in our data entirely match between the two formats.

Python:
import json

format1 = 'gen8randombattle.json'
format2 = 'gen8randomdoublesbattle.json'

print(f'Comparing {format1} with {format2}')

setequality = []

with open(format1) as f1:
    sets1: dict[str, dict] = json.load(f1)
    with open(format2) as f2:
        sets2: dict[str, dict] = json.load(f2)

        for mon in sets1.keys():
            if mon in sets2:
                equal = sets1[mon] == sets2[mon]
                # print(f'{mon:20} {equal}')

                setequality.append(equal)

print(f'Are all sets equal:  {all(setequality)}')

Running this script on the Gen 9 formats gets us...

View attachment 844929

...the expected result.

Running this script on the Gen 8 formats gets us...

View attachment 844931

...something that validates your post.

Let's look at how sets are generated for Gen 9 random battles formats:

View attachment 844932

It looks like there are sets for the random battle and the random doubles battle formats.

What about for Gen 8 random battles?

View attachment 844933

It looks like it doesn't have sets for Gen 8 random doubles battle formats. Maybe what happens is that for Gen 8 random doubles battles, it just uses the same sets as for Gen 8 random battles. Maybe A Cake Wearing A Hat could correct anything about my post if it's incorrect.
Gen 8 Random Doubles is...not supposed to exist right now. It's supposed to temporarily be unplayable until we're done revamping it. We'll have to fix that.
 
It seems that the -1 speed calculations in the Champions section are incorrect. For example, it shows that a 32+ speed Mega Alakazam's -1 speed is 146 but it's actually 148 in battle. It's also 148 if you try calcing at level 50 in the SV section (The actual 2/3 x 222 calculation is also 148 btw). I've checked with multiple Pokemon like Scarf Excadrill -1 should be 153 but it shows 151 in the Champions section. Max Speed Garchomp -1 should be 112 but it shows 111.
image.png
image 3.png
image 2.png
 
It seems that the -1 speed calculations in the Champions section are incorrect. For example, it shows that a 32+ speed Mega Alakazam's -1 speed is 146 but it's actually 148 in battle. It's also 148 if you try calcing at level 50 in the SV section (The actual 2/3 x 222 calculation is also 148 btw). I've checked with multiple Pokemon like Scarf Excadrill -1 should be 153 but it shows 151 in the Champions section. Max Speed Garchomp -1 should be 112 but it shows 111.
Fixed
 
A user reported a large discrepancy in the randbats Gen 1 calculator:

Randbats calc:
Lvl 70 Articuno Blizzard vs. Lvl 90 Ekans: 179-211 (72.7 - 85.7%) -- guaranteed 2HKO
1783969306301.png

Regular calc:
Lvl 70 Articuno Blizzard vs. Lvl 90 Ekans: 142-168 (57.7 - 68.2%) -- guaranteed 2HKO
1783969290373.png


The regular calc is what's right (or at least that's what matches Showdown). The difference lies in the special stat on Ekans; randbats calc has it much lower, at 104. No idea why it's different, did not try to debug myself.
 
There's a discrepancy between PS! and the damage calculator for old gens LC where some attacks show the wrong amount of damage. Tested in ADV LC and it seems to affect DPP as well, but maybe not BW onwards. It's been difficult to reproduce due to only affecting specific damage ranges, so I'm not entirely sure why it's happening. I've tried to test with dual types, multihits, and EVs, but none of them seem to be consistently causing problems.

Examples of calcs where two targets have the same defensive stats, but the one with only neutral defensive types is shown to take more damage:
1784122968481.png

1784122987562.png


1784125269680.png

1784125298897.png
1784122819876.png

1784122846446.png
I thought it was just multihits before this, but HP Fighting has the issue here instead of Double Kick. It also does different amounts of damage to Swablu and Anorith, so maybe it's related to the EVs being applied??
1784127663010.png

1784124294128.png

1784124299093.png
Water Spout apparently doing more damage to 0 EVs Skitty than 0 EVs Barboach with the same special bulk, but then doing the same amount to both when I change their bulk to match a Lileep:
1784128614669.png

1784128633451.png


1784128924787.png

1784128809602.png

1784128871983.png

Teams and replays for testing Bonemerang:
https://pokepast.es/f54f87e1460878d6
https://pokepast.es/b31e2f4be05f9f22
https://replay.pokemonshowdown.com/gen3lc-2649569303-79lag2trkjfgej1r8wnrst8envp8700pw
https://replay.pokemonshowdown.com/gen3lc-2649547136-tfji3rg4vjyk9x5oqjquw7sb1tic63lpw
Notably, the Lileep takes 13 damage from one hit of Bonemerang, when the calc says it should only be taking 12 at most. (First screenshot in the spoilers)
 
There's a discrepancy between PS! and the damage calculator for old gens LC where some attacks show the wrong amount of damage. Tested in ADV LC and it seems to affect DPP as well, but maybe not BW onwards. It's been difficult to reproduce due to only affecting specific damage ranges, so I'm not entirely sure why it's happening. I've tried to test with dual types, multihits, and EVs, but none of them seem to be consistently causing problems.

Examples of calcs where two targets have the same defensive stats, but the one with only neutral defensive types is shown to take more damage:
I thought it was just multihits before this, but HP Fighting has the issue here instead of Double Kick. It also does different amounts of damage to Swablu and Anorith, so maybe it's related to the EVs being applied??
Water Spout apparently doing more damage to 0 EVs Skitty than 0 EVs Barboach with the same special bulk, but then doing the same amount to both when I change their bulk to match a Lileep:

Teams and replays for testing Bonemerang:
https://pokepast.es/f54f87e1460878d6
https://pokepast.es/b31e2f4be05f9f22
https://replay.pokemonshowdown.com/gen3lc-2649569303-79lag2trkjfgej1r8wnrst8envp8700pw
https://replay.pokemonshowdown.com/gen3lc-2649547136-tfji3rg4vjyk9x5oqjquw7sb1tic63lpw
Notably, the Lileep takes 13 damage from one hit of Bonemerang, when the calc says it should only be taking 12 at most. (First screenshot in the spoilers)

its a problem with showdown, not the calc. its related to a pokemon's typing, see lileep in your calcs which has a rock typing to be weak to grass but then a grass typing to resist grass. The Damage Calc shows you the correct output, to get what showdown is doing change the damaged pokemon's typing to be single type neutral (i.e make lileep a pure normal).
 
Hi, I noticed a bug with the item Metronome in Generation IV. There are two different parameters relative to this item that may be changed by togglin(Never, once, twice, 3 times, ...) but they seem to be uneffective.
bumping this post. seems to only be a problem in DPP with the toggle not actually changing the damage output. additionally, the base toggle w/o metronome (never, once, twice, etc.) also doesn't seem to have any affect on the calc's damage output
Fixed

A user reported a large discrepancy in the randbats Gen 1 calculator:

Randbats calc:
Lvl 70 Articuno Blizzard vs. Lvl 90 Ekans: 179-211 (72.7 - 85.7%) -- guaranteed 2HKO
View attachment 847292
Regular calc:
Lvl 70 Articuno Blizzard vs. Lvl 90 Ekans: 142-168 (57.7 - 68.2%) -- guaranteed 2HKO
View attachment 847291

The regular calc is what's right (or at least that's what matches Showdown). The difference lies in the special stat on Ekans; randbats calc has it much lower, at 104. No idea why it's different, did not try to debug myself.
Fixed by jetou
 
Would it be possible to add Champions to the All vs One and One vs All options? Or maybe allowing you to set all Pokemon levels to either 50 or 100?
It would help a ton for seeing potential team weaknesses outside the meta game for VGC
 
Draconize boosts every single move including non-Normal ones.

My brother has lost a tournament game because of this please do something; he is very sad atp.

EDIT : I meant Dragonite with a g.

EDIT 2 : Dragonize with a z sorry.

DMHFzSE.png
 
Last edited:
Hey, the set for Mega Blastoise on the calc set for SM RU has Rain Dish as its ability even if you select the mega. It should be Mega Launcher. Actually, the normal one has the wrong ability too, though less important, it's supposed to be Rain Dish in accordance to its analysis but it's not.
 
Hi, don't know if this is the place for this post but I think the run and bun calc uses a smogon sprite library and they are not correctly loading at the moment, thanks :)
 
There is a bug in the damage calc that I assume has to do with rounding somewhere. In this screenshot you can see the calc say that there is a 6.3% chance to OHKO after rocks, but Diglett-A has 18 HP, meaning that it takes 1 damage from rocks and would be 17 HP for the purposes of this calc.

The correct display should say "50% chance to OHKO after rocks", not a 6.3% chance. My assumption is that this is somehow related to the calc rounding the stealth rocks damage since diglett-a is a 4x resist but I'm not entirely sure.
1000019330.jpg
 
The triple kick calc is bugged and doesn't show the right damage rolls. It seems to only calc 10 BP (first hit) x 1.5 (technician) x 3 when it should be 15 BP + 30 BP + 45 BP.
1787712119971.png
 
Hi i noticed Nightmare isnt listed on showdown calculator https://calc.pokemonshowdown.com/index.html?gen=2 i think it would be good to implement considering how often nightmare can play in a gsc game since sleep and rest talk is good in this . is there any way to implement nightmare damage on the calc? considering it acts at the end of the turn and deals 1/4 of the opponent pokemon max hp. And if bad dreams can work on the calc why nightmare cant
Implemented
There is a bug in the damage calc that I assume has to do with rounding somewhere. In this screenshot you can see the calc say that there is a 6.3% chance to OHKO after rocks, but Diglett-A has 18 HP, meaning that it takes 1 damage from rocks and would be 17 HP for the purposes of this calc.

The correct display should say "50% chance to OHKO after rocks", not a 6.3% chance. My assumption is that this is somehow related to the calc rounding the stealth rocks damage since diglett-a is a 4x resist but I'm not entirely sure.
View attachment 856420
Fixed
 
hi, it appears that the default blastoise set on the calc has the wrong evs or moves at the moment, not super relevant but if its fixable that'd be great



1788538599762.png
 
There's a UI design bug in damage calc when switching from Wicked Blow Urshifu to another mon the moveslot that had Wicked Blow before stays as Crit
Fixed by jetou

The triple kick calc is bugged and doesn't show the right damage rolls. It seems to only calc 10 BP (first hit) x 1.5 (technician) x 3 when it should be 15 BP + 30 BP + 45 BP.
View attachment 858803
Cannot replicate. Which generation/settings is this calc for?
Hi, just wanted to ask if there is any support for calculating Charge-boosted Electric moves on the calc. I haven't been able to find a way to get an Electromorphosis boost for calcing.
Implemented.
 
Back
Top