smogon / damage-calc

Pokemon games damage calculator
https://calc.pokemonshowdown.com
MIT License
393 stars 367 forks source link

If Spectral Thief in moveset, all other moves steal offensive boosts, and defending Pokémon steal defensive boosts #248

Open penpexgit opened 6 years ago

penpexgit commented 6 years ago

1) Pick Marhsdow's Uber Life Orb Attacker set on both sides 2) Make Attack at +1 on left Marshadow 3) Now any calc from right sides's Marshadow (not at +1) show up at +1, see pic attached https://imgur.com/a/GPQt1de

It's like it applies Spectral Thief's effect to any of Marshadow's moves, even Shadow Sneak or Rock Tomb as seen on the pic, which should not happen. It also works for any +X Att, or +X SpA, or +X Def, +X SpD. Actually it goes even further (and is probably the same bug), if you do +1Def on the LEFT, and select a calc on the LEFT side, it will take it into account for the right side : 252 Atk Life Orb Technician Marshadow Rock Tomb vs. +1 0 HP / 4 Def Marshadow: 49-58 (15.2 - 18%) -- possible 6HKO

penpexgit commented 6 years ago

Actually after thinking more about it, and further testing, here is what happens: it doesn't even have to be Marshdow on the left side, any Pokémon will do and what I said above is repeatable. But if you remove Spectral Thief from the moveset this behavior disappears.

So I think what might be happening during a calc where a Marshadow is present is something along these lines (in pseudocode):

if Spectral Thief is in Moveset then apply Spectral Thief effect endif

instead of having this:

if Spectral Thief is Move then apply Spectral Thief effect endif

Might be something different though, but maybe it can help.

AustinXII commented 6 years ago

@Ntonio36

penpexgit commented 6 years ago

I changed the title since it was still containing a reference to Marshadow even though as I mentioned earlier this has nothing to do with Marshadow, but just Spectral Thief. I also slightly rephrased for clarity.

AustinXII commented 5 years ago

We don’t really have a good method of tracking only one of the moves being used. I’ve left the open to remind myself that we should probably do that at some point