smogon / pokemon-showdown

Pokémon battle simulator.
https://pokemonshowdown.com
MIT License
4.65k stars 2.71k forks source link

Known Mechanics Bugs #2367

Open Marty-D opened 8 years ago

Marty-D commented 8 years ago

Bugs are now listed in the 'Mechanic Bugs' project

https://github.com/Zarel/Pokemon-Showdown/projects/3

You can comment in psim.us/dev or on this bug with any questions or to signal your intent to work on a specific bug listed on the project.

GraillLord commented 7 years ago

@Marty-D Sorry for the answer delay, I wanted to fix the 2 turn moves issue but it seems solved ? (Still not sure cause the bug is still on live)

Two-turn moves should ignore redirection on the charging turn fixed in 06567f8.

Marty-D commented 7 years ago

@acz13 I don't know offhand.

@GraillLord The two-turn move issue you're talking about and the one you just quoted are different bugs. The one you quoted was indeed fixed, as you can see by its absence from the checklist.

GraillLord commented 7 years ago

@Marty-D Hi, I've been working a lot recently and had little time for solving bugs, but concerning http://replay.pokemonshowdown.com/anythinggoes-285817545 I solved it just by replacing if (lacksTarget) { with if (lacksTarget && move.flags['charge']) { in data/scripts.js at line 261

edit: Two-turn moves should not fail with no target fixed in #3523.

Marty-D commented 6 years ago

Confusion damage should not be affected by opposing Unaware fixed in https://github.com/Zarel/Pokemon-Showdown/pull/3530. Gen IV - Implement accurate damage formula fixed in https://github.com/Zarel/Pokemon-Showdown/pull/3583. Gen IV - Damage-reducing Berries should not activate on theoretical damage fixed in https://github.com/Zarel/Pokemon-Showdown/pull/3626. Gen III - Implement accurate damage formula fixed in https://github.com/Zarel/Pokemon-Showdown/pull/3655.

urkerab commented 6 years ago

Source (some of these may have already been filed or fixed).

DaWoblefet commented 6 years ago

Adding on to the list:

urkerab commented 6 years ago

Thiefing a Weakness Policy triggers and consumes the Weakness Policy

I think this was fixed by PR #3867.

Marty-D commented 6 years ago

I think this was fixed by PR #3867.

https://github.com/Zarel/Pokemon-Showdown/commit/1f6e1e8d457f5cc37612be78b711e22470fea45b @urkerab

DaWoblefet commented 6 years ago

A Choice-locked Pokemon using a Pledge move in a Pledge combo attack should be locked into the Pledge move the following turn (source).

Marty edit: Fixed in https://github.com/Zarel/Pokemon-Showdown/commit/c28347edda25991145efbd43695f74fc0a61c9b9.

killemall420 commented 6 years ago

I have left a post regarding to the Hidden Power issue here: https://github.com/Zarel/Pokemon-Showdown/issues/4026

Zarel commented 6 years ago

Clarification: This issue is meant for mechanics bugs that have been confirmed by a staff member - generally either Marty, DaWoblefet, or some other collaborator who has witnessed a battle video and the corresponding PS mechanic and can confirm that they differ.

DaWoblefet commented 6 years ago

Some Encore-related bugs (source):

Marty edit: removed "Encore should fail on a Z-move. Right now, Encoring a Z-status move locks the target into the base attack of that Z-move." since I added it to the first post a few days ago.

QuiteQuiet commented 6 years ago

Sucker Punch is already implemented in this way.

Sucker Punch still leaks the information about the target in the console, so this isn't entirely resolved for Sucker Punch either.

DaWoblefet commented 6 years ago
Slayer95 commented 6 years ago

not Nuzzle

But should Nuzzle advance the RNG?

Marty-D commented 6 years ago

A Pokemon Transformed into a Mega Evolution should not be able to use Z-Moves fixed in https://github.com/Zarel/Pokemon-Showdown/commit/934fc5b40d7b2c8764df5c2edeaad6428f3c1da5. After additional research, Transforming into a Primal Reversion displayed the same behaviour.

Marty-D commented 6 years ago

Gen II - Accuracy checks should be capped at 255 before BrightPowder fixed in https://github.com/Zarel/Pokemon-Showdown/pull/3926.

Marty-D commented 6 years ago

Encore should fail against Z-Powered Status moves fixed in https://github.com/Zarel/Pokemon-Showdown/pull/4298.

DaWoblefet commented 6 years ago

There was a bug reports post about a couple of interactions with Ally Switch that have been known for a while now but seems to have been overlooked. These replays show it hasn't been fixed yet.

DaWoblefet commented 6 years ago

Important bug with Assurance in Doubles; it is doubling in base power in situations where a target was KOed and the Assurance was redirected into the opponent from the original Assurance target. I'm assuming that Assurance is checking the slot it targeted to see if it had taken damage yet, not the slot it actually is attacking. See bug reports post.

Marty-D commented 6 years ago

Gen IV - Baton Pass, Healing Wish, Lunar Dance, and U-turn fixed in https://github.com/Zarel/Pokemon-Showdown/pull/4519.

DaWoblefet commented 6 years ago

The interaction of contact Z-moves and Protect behave incorrectly. The behavior was originally described here, but appears to have been overlooked as it was currently mentioned again to me. As a summary:

You can see the behavior in the linked post's video, but I also tested and have Battle Videos myself if needed.

Marty edit: To clarify, the above is only true of Z-Powered moves. For hackmons purposes, the moves themselves used without Z-Power are completely unaffected by protection moves; they don't even reduce damage dealt. Fixed in https://github.com/Zarel/Pokemon-Showdown/commit/538ac5ca5559fbf788becf2472562f29f5022f09

Marty-D commented 6 years ago

Gen IV - Accuracy should be checked before Ability immunities fixed in https://github.com/Zarel/Pokemon-Showdown/commit/bbeb041e701ed0f9ea6d3375a798d9166e9faac1.

mid-kid commented 6 years ago

Sorry to come knocking where I maybe shouldn't, but since King's Rock still needs proper implementation in gen2, and I've recently discovered some King's Rock-related bugs, I might as well make sure they're known of.

Both of these bugs are related to the messy working of Beat Up.

First of all, even when no mon has been able to hit due to having a status effect or being fainted, the king's rock may activate: This doesn't happen when the move is protected against, or fails for whatever other reason.

And the other bug happens when only one 'mon is present in the user's party, and prevents the King's Rock effect from being triggered, overriding the behaviour above. This can only be seen in-game through the fact the substitute won't be raised either, as both "effects" are skipped: (Not raising the substitute is only a graphical bug, the game will still treat it as if it's present, and raise it again if a different move is used)

I've documented both bugs in pokecrystal (but it's yet to be merged at the time of writing), here and here, if you're interested in how it looks in the code.

DaWoblefet commented 6 years ago

A round of small bugs:

More serious bug:

Marty-D commented 6 years ago

Gen II - Belly Drum mechanics fixed in https://github.com/Zarel/Pokemon-Showdown/commit/70ff3103ba24c3802c9d63a3cb6966cba5aaa7b2.

Gen II - Tri Attack should be able to thaw the target fixed in https://github.com/Zarel/Pokemon-Showdown/commit/6c8b738e7dce81657bbc792496f6a52143444cf0.

DaWoblefet commented 6 years ago

Went through the bug reports thread and found some more mechanics to be fixed. You can see all of these tested here :

DaWoblefet commented 6 years ago

More small bugs! This round of tests can be found here.

DaWoblefet commented 6 years ago
asingh04 commented 6 years ago

The "details" link for "Implement King's Rock properly" doesn't work anymore. Was it having any important info related to #3343 ?

Marty-D commented 6 years ago

@asingh04 I've edited in the archive version of the page. It's basically what is detailed in that issue but as a complete list of moves.

DaWoblefet commented 6 years ago

Another round of reporting bugs!

The following 4 bugs are from my bug reports post here.

Slayer95 commented 6 years ago

Fixed the Shadow Tag leak in c3e752c87f9c8e17b079c645302002fe97f01dd6. As for the information reveal enhancement, it's not quite trivial so long as we still support Triples. However, it can probably be special-cased for Doubles in the client when the error message is received?

Marty-D commented 6 years ago

Stomping Tantrum is sometimes doubling in BP when its previous move landed into a Protect.

This is because of the Truant fix, but it's really just exposing the real bug here. It means that currently a turn of Dancer/Instruct forcing a successful move, then your actual move decision goes into a Protect, next turn Stomping Tantrum will be doubled. That sounds like wrong behaviour. @MacChaeger?

pyuk-bot commented 6 years ago

I know why that is. It’s that moveThisTurnResult saves its current value right before useMoveInner is called, and the return value of useMoveInner is only stored if moveThisTurnResult is the same as it was before the call. That’s specifically to check if a Protect move forced the value to change manually from undefined to true, but if the value was already true either from Mega Evolution or from using another move successfully, then the value would be overwritten by the value of false returned by useMoveInner to indicate that the move didn’t execute. This is easily fixed by simply re-initializing moveThisTurnResult to be undefined instead of saving the current value, or more properly fixed by actually getting useMoveInner to return something other than false when the move hit at least one Protect-like (and to make moves that call other moves from their onHit event handlers via useMove to return the value that that function returns, as such moves also rely on that comparison to the old value and are thus also currently affected by this bug, but in the opposite way). Anyone may feel free to do one of these fixes themselves as I won’t be back to my laptop for at least two hours.

Sent from my iPhone

On May 19, 2018, at 3:51 PM, Marty-D notifications@github.com wrote:

Stomping Tantrum is sometimes doubling in BP when its previous move landed into a Protect.

This is because of the Truant fix, but it's really just exposing the real bug here. It means that currently a turn of Dancer/Instruct forcing a successful move, then your actual move decision goes into a Protect, next turn Stomping Tantrum will be doubled. That sounds like wrong behaviour. @MacChaeger?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

DaWoblefet commented 6 years ago

Some clarifications / more bugs!

Marty-D commented 5 years ago

Gen III - Berry usage timing fixed in https://github.com/Zarel/Pokemon-Showdown/commit/ac71237de177b3b97ade6750eb923b59fa0f6cb7.

DaWoblefet commented 5 years ago

More small bugs! The first two can be verified from this Twitch VOD (will change to YouTube later).

DaWoblefet commented 5 years ago

Even more small bugs (first can be verified in this video, second-fourth from video):

Cureja commented 5 years ago
  • Mid-battle forme changes (e.g. Aegislash, Mimikyu) should update weight in the same way typing / modification to an actual stat is updated. That is, if you Soak an Aegislash and it changes formes, it returns to Steel / Ghost type; in the same way, if an Aegislash uses Autotomize and changes formes, its weight is reset to base Aegislash weight.

Should we remove the Autotomize volatile tag then when they change formes? That should remove the weight modification done.

bgsamm commented 5 years ago

King's Rock should be able to flinch after breaking a sub in Gen 2 - see #4916 (comment)

bgsamm commented 5 years ago

Also, I believe the double battle faint mechanics issue in Gen III has been fixed (line 2975 in battle.js).

HoeenCoder commented 5 years ago

https://www.smogon.com/forums/threads/bug-reports-v3-0-read-op-before-posting.3634749/page-19#post-7950168

Confusion resulted in a critical hit when the pokemon hit itself (gen 4). Confirmed as a bug by @Marty-D, don't have time to do this myself rn so feel free to pick it up.

Edit: Fixed

DaWoblefet commented 5 years ago

These all are from this bug reports post.

EDIT: Adding another very minor bug:

kjsuarez commented 5 years ago

Is anybody currently working on 'Berry interaction with Unnerve switching to Unnerve'?

SadisticMystic commented 5 years ago

Speaking of berries...

mid-kid commented 5 years ago

Good job closing an active issue, github.

Zarel commented 5 years ago

I wonder if we just make a new issue just to clear out historical cruft from this one.

MathyFurret commented 5 years ago

in the meantime nobody say "this fixes #2367" or github will close it D:

LegoFigure11 commented 5 years ago

Research needed

  • Hacked genders in past gens (see #2327)

Continuing discussion from #2327 - it is possible to hack the genders of Pokemon in gens 4 - 7 independently of the PID (Editable value is stored at 0x40 in Gen 4 and 5 pkm structure, and 0x1d in Gen 6 and 7 - this value is initially calculated from the PID but can be changed, enabling the forcing of particular gender (or lack thereof) to a Pokemon, even if that Gender is unavailable on it).

Editing the gender independently of the PID is NOT possible in Gen 3 however, which essentially means that Pokemon cannot have Illegal genders (e.g. no Genderless or Male Blissey in Gen 3).