Resource RBY & Tradebacks Bug Report Thread

Plague von Karma

Banned deucer.
Haze's implementation continues to surprise me.

Haze delays charge moves for some reason
I don't know who or what made this implementation, as there's even a message saying the Pokemon was freed from the charge move. This entire interaction runs contrary to what happens on the cartridge. This replay shows the issue.

Here's a mechanics test video featuring my Golbat using Haze against a Sky Attacking Moltres. I set it up so my Golbat would be faster than my Moltres.
As you can see, Moltres uses Sky Attack as normal. When a Pokemon is charging, it's not even considered an attack, thus why Mirror Move will copy the move used the turn before, or fail if there isn't one. It should essentially be a skipped turn in most instances.

Other Haze bugs
My friend Mahal Kita Sobra has further replays of Haze glitches, plus a list of the problems.
https://replay.pokemonshowdown.com/gen1ou-1165974443
https://replay.pokemonshowdown.com/gen1ou-1164519039
https://replay.pokemonshowdown.com/gen1ou-1161773480
https://replay.pokemonshowdown.com/gen1ou-1166554238

☆Mahal Kita Sobra: So, in summary, we have the following bugs:
☆Mahal Kita Sobra: #1: Relief of paralysis speed drop, burn attack drop, and focus energy show non-user-friendly messages.
☆Mahal Kita Sobra: #2: When burn/paralysis is cleared, it does not show in the GUI. However, it seems to be working correctly from a mechanics perspective.
☆Mahal Kita Sobra: #3: Haze does not clear Mist.
☆Mahal Kita Sobra: #4: The snap out of confusion & no longer disabled messages appear twice.
Bug #5: Haze on self resets the badly poisoned counter rather than removing the badly poisoned status and replacing it with regular poison.
Potential Bug #6: "The way the counter is working with leech seed/toxic is if the pokemon is leeched or badly poisoned, increment, otherwise don't."
Another bug: the visual counter of what the toxic increment should be is off, because of when toxic damage occurs.

There is also a message error where Haze will remove [TEAM]'s Reflect or Light Screen...as if it were later generation implementations.

In total, there are 8 Haze glitches documented so far.
I also updated my post about Haze VS Multi-turn moves with a replay from Mahal, as he found something regarding that too.
 

Plague von Karma

Banned deucer.
Haze falls under Stat Reapplication and...frees from recharge turns?
So a friend has been testing Haze some more and found some more wacky things. Kris said they'd fix it in the Researcher Discord, just noting it here so it's all recorded. Here's the replay in question.

So before we get into how this is all wrong, I'd like to direct you to this guide on how RBY stats work. Haze, like many things in the stat department, are absurd eldritch horrors that should not exist. Read it carefully, it's quite complicated.

So there are two issues presented here;
  • Haze isn't resetting the stats after use. It appears to reset the stat stages, but not the stats. As a result, they will reapply when using a boosting move. This is inaccurate. To quote the guide I sent;
    Haze resets all the stat stages of both you and your opponent to zero and also resets all the actual stats of both Pokémon to their unmodified out-of-battle stats, without badge boosts or status modifiers.
  • For some weird reason, Haze frees opponents from Recharge turns, which I spotted while watching the replay. So it's two bugs unless I'm missing something that has not been documented anywhere.
    • Recharging as a "thing" also applies under the "HazeLocking" interaction with Freezing in this post.
PS RBY Haze and RBY Haze are different moves tbh.

EDIT: found something else.
Conversion is a bit weird
So here's a replay showing some Conversion interactions. From what I can see, there are a few things wrong.

Crystal_'s post on the first page claims Conversion should only copy Type 1, but here, it copies Types 1 and 2, mimicking Reflect Type I believe? In addition, there's also a visual glitch where it tries to say Porygon copied an...Electricflying type.

Here's the visual issue so you don't have to dig through the replay.
1599820148129.png
 
Last edited:

Enigami

is a Forum Moderatoris a Community Contributoris a Pokemon Researcher
Moderator
Crystal_'s post on the first page claims Conversion should only copy Type 1, but here, it copies Types 1 and 2, mimicking Reflect Type I believe?
I investigated this on cartridge, and I've confirmed using that Conversion does copy both Types 1 and 2.

1599858691593.png

I used Psychic on Porygon after Porygon used Conversion on Venomoth. The result was a super effective hit on Porygon, which confirmed Porygon was Bug/Poison and thus copied Type 2. Showdown's implementation is correct here.
 

Enigami

is a Forum Moderatoris a Community Contributoris a Pokemon Researcher
Moderator
https://replay.pokemonshowdown.com/gen1nu-1183963369-7vnmd5nupjf7u0fkdvkgq18lpd6hhgypw

to say that Sword Dance cancels the Kabutops burn here in round 5.
When a stat boosting move in RBY is used, it recalculates the Pokemon's new stat value based on the user's original stat value boosted by stat stage, but the programmers forgot to include status in this recalculation. For example, Kabutop's Attack stat is 328. After being burned, its Attack is halved to 164. After using Swords Dance, instead of doubling to 328 like you would expect, it instead doubles its original Attack stat of 328 to 656, and then 984 when it uses Swords Dance one more time. iirc they fixed that bug in Stadium, but since Showdown RBY is based on the original cartridge games, the original bug is the "correct" implementation.
 

Plague von Karma

Banned deucer.
Thanks to Enigami and Gold for helping figure this out. Enigami is gonna provide further clarification on this later, also asked some people in the Researcher Discord for clarity.

Flinch moves should cancel Hyper Beam recharge
For reference, here's a replay showing it isn't implemented. I see on the code here that Sleep and KOs (obviously) stop the recharge, but not moves that cause a flinch.

According to Bulbapedia (not the greatest source, I know, but it helps here) and a tweet by Gold, if a move causes a Flinch, Hyper Beam's recharge is nullified. As a result, the user of Hyper Beam can move next turn as if it caused a KO.

The main thing we're not certain about is whether the move needs to actually proc a flinch to override, or if it just needs to potentially cause it.

SadisticMystic has confirmed that this doesn't come up in Stadium.
 

Enigami

is a Forum Moderatoris a Community Contributoris a Pokemon Researcher
Moderator
Thanks to Enigami and Gold for helping figure this out. Enigami is gonna provide further clarification on this later, also asked some people in the Researcher Discord for clarity.
I've tested it on cartridge and confirmed that using a flinching move on a Pokemon after it had used Hyper Beam will remove the requirement to recharge if a flinch would have occured.

I had Tauros use Hyper Beam on Rhydon, and then had the Rhydon use Stomp. The following turn, Tauros would sometimes not require a turn to recharge due to the slow Stomp removing the need for Hyper Beam to recharge.

I then checked the Pokemon Red/Blue disassembly and found that when it sets the flag for flinch when a flinch would occur, it calls the ClearHyperBeam function, which is why using a slower flinching move after a faster Pokemon uses Hyper Beam will clear the faster Pokemon's recharge flag.
set Flinched, [hl] ; set mon's status to flinching
call ClearHyperBeam
ret
 

Hipmonlee

Have a nice day
is a Community Contributoris a Senior Staff Member Alumnusis a Smogon Discord Contributor Alumnusis a Tiering Contributor Alumnusis a Top Contributor Alumnusis a Battle Simulator Moderator Alumnusis a Four-Time Past WCoP Champion
FOMG found some weirdness with Wrap and Substitute on Showdown.
https://replay.pokemonshowdown.com/gen1ou-1200810507

It seems when a slower pokemon uses a partial trapping move against a faster Pokemon behind a substitute, it will immobilise the Pokemon a turn late.

Which has two weird outcomes. The first is that this apparently only works every second turn. When the immobilised Pokemon is properly immobilised, on the following turn it will just be able to move however it likes. The second thing is that the defending Pokemon will be immobilised on the turn following the end of the Partial trapping move.

Secondly, against a Gengar with a Substitute, partial trapping moves only last 1 turn, but, if the user of the partial trapping move is slower the Gengar will be immobilised on the turn after the partial trapping move is used.
 

Plague von Karma

Banned deucer.
For some reason, when a Pokemon faints while partial trapping, the trapped Pokemon just becomes unable to move? EB0LA sent a replay featuring Khaetis and Volk, where the issue happens around Turn 90. It appears to be similar to Hipmonlee's issue;
FOMG found some weirdness with Wrap and Substitute on Showdown.
https://replay.pokemonshowdown.com/gen1ou-1200810507

It seems when a slower pokemon uses a partial trapping move against a faster Pokemon behind a substitute, it will immobilise the Pokemon a turn late.

Which has two weird outcomes. The first is that this apparently only works every second turn. When the immobilised Pokemon is properly immobilised, on the following turn it will just be able to move however it likes. The second thing is that the defending Pokemon will be immobilised on the turn following the end of the Partial trapping move.

Secondly, against a Gengar with a Substitute, partial trapping moves only last 1 turn, but, if the user of the partial trapping move is slower the Gengar will be immobilised on the turn after the partial trapping move is used.
--

Also...

It seems that counter still hasn't been patched as evidenced from t45 in this game https://replay.pokemonshowdown.com/smogtours-gen1ou-523659
I clicked surf with starmie, got full para'd and chansey's counter went through regardless whereas it should fail according to what was voted by the community.
This was fixed a while ago; just noting.
 
Last edited:

Plague von Karma

Banned deucer.
Twineedle appears to have its effect chance on both multihits, which reflects in the code on PS. I experienced this in a Random Battle yesterday, though I don't have the replay on me.
JavaScript:
twineedle: {
        inherit: true,
    },
It's simply inheriting from later generations, which unintentionally causes an inaccuracy. Multihits will only apply added effects on the last hit.

Additionally, this is extremely pedantic, but the effect chance is 20% when I believe should be 19.9%. There are likely more moves with this issue, which I'll see about fixing myself in the future. Refer to my indev mechanics guide for information on that, confirmed by Shellnuts through the disassembly.

EDIT:
Right, so I did more checks and it appears that every single effect chance seems to be rounded to the nearest whole number. I'm not sure how PS handles effect chances with decimals, but this does technically make every move with a secondary effect inaccurate. I'm not sure if this is due to a limitation - I know some programming languages can be weird with decimals - but this does result in inaccuracies all over the place. This also means that the Smogon Dex is inaccurate.

(this turned out to be sorted already with a background calc)
 
Last edited:

EB0LA

Banned deucer.
http://replay.pokemonshowdown.com/gen1customgame-242074284
Transform should copy the current Speed of the opponent's Pokémon (Transform was used on turn 4 on a Paralysed Mew, then the Transformed Mew managed to win a Speed tie with a non-paralysed Mew on turn 8 )
Transform should not copy the Critical Hit Ratio from the opponent's Pokémon, it should keep its own Critical Hit Ratio (Turn 48, Transformed Mew deals a Critical Hit with randBW(256) = 61 against Mewtwo, but Mew has a Critical Hit Ratio of 50/256)
Adding to this, Enigami had tested it for me.
The crit damage would fall into the transformed users base stats, but the STAB typing the user gets from transforming would still be applicable. So Surf Crit from a Transformed Ditto would use Ditto's base SPC stat ignore any boosts/drops of opponent/ their own but still use Water STAB during the crit.

Also adding that sometimes the rolls are a little off that damage is a little too low or too high. Can't find my replays, but from my notes...

Non-Crit:
Electrode (Transformed Ditto) Vs. Vileplume did 12% even with a tbolt, when the min-max damage is 12.7%-15%
Electrode (Transformed Ditto) Vs. Exeggutor did 9% even with a tbolt, when the min-max damage is 9.6%-11.4%
Electrode (Transformed Ditto) Vs. Exeggutor did 12% even with a tbolt, when min-max damage is 9.6%-11.4%

Also note, per move Coversion a mon would also still keep its converted typing while doing crits; keeping its new STAB typing. (Enigami tested this as well.)
 
Last edited:

Plague von Karma

Banned deucer.
So a thing that has been pointed out by a few people in the past (Enigami, EB0LA, prolly a few others) is a funny quirk regarding move limits in RBY. Because of the lack of a move deleter, you technically have minimum levels for the amount of moves you can have in a moveset. This is partially why the Magikarp in Random Battles received Splash recently, as the moveset prior was technically illegal. The only way to delete moves - and thus have less than 4 moves at higher levels - is to use GSC's move deleter in Blackthorn City.

However, PS has never enforced minimum level validation for the amount of moves in a Pokemon's learnset. For example, at level 20, Bulbasaur will always have 4 moves, as this is when it learns Poison Powder and you cannot stop a Pokemon from learning a move if it has less than 4. This hardly affects any Pokemon unless it actively wants to get Struggle, but it is technically a thing that is required.

However, with the new(ish) Tradeback Clause that makes it so that only Tradeback moves are disallowed to allow Max DVs, any format that runs it should technically allow move deletion. Ergo, this only really affects official formats that disallow Tradebacks in their entirety for the sake of historic accuracy. This may require a change to the way PS validates Tradebacks as a result, as it currently uses "Allow Tradeback" in Tradeback formats...when it should probably be the other way around for reasons like this.

Tagging Hipmonlee for verification on whether the amended Tradeback Clause allows the less than 4 move stuff, though it is probably obvious if only for the wording. It's a moveset change, but not a Gen 2 move addition, which is an area of contention I suppose.

Also, to any RBYers, always report bugs, no matter how minor.
 

Hipmonlee

Have a nice day
is a Community Contributoris a Senior Staff Member Alumnusis a Smogon Discord Contributor Alumnusis a Tiering Contributor Alumnusis a Top Contributor Alumnusis a Battle Simulator Moderator Alumnusis a Four-Time Past WCoP Champion
So my position is specifically that because Max DVs are obtainable via the Mew glitch then they should be allowed in RBY. The tradebacks thing is not really a consideration.

In my opinion pokemon should not be allowed to use the move deleter.
 

Amaranth

is a Site Content Manageris a Forum Moderatoris a Community Contributoris a Top Tiering Contributoris a Top Contributoris a Dedicated Tournament Hostis a Tournament Director Alumnusis a Social Media Contributor Alumnusis a Community Leader Alumnusis a Past SPL Champion
Moderator
So my position is specifically that because Max DVs are obtainable via the Mew glitch then they should be allowed in RBY. The tradebacks thing is not really a consideration.

In my opinion pokemon should not be allowed to use the move deleter.
That's not the official position of the council, currently, and allowing for glitches as a fair method to obtain your pokemon is a dangerous floodgate to open and I really don't think it's one worth opening for something as minor as this
 

Plague von Karma

Banned deucer.
I just played Pika Cup in the Pokémon Stadium 1 simulator and discovered that level 15 Slowbro is still banned.
I looked into this with DaWoblefet and it turned out that this also affected Scyther, Pinsir, and Voltorb. The reason for this was a line of code that used a < instead of a >, which then caused Pokemon with multiple "encounter" entries in the learnset file to validate the wrong way around. Thus, because Slowbro had an L15 and L23 entry, it went with the latter. Ergo, it was false flagging Slowbro as illegitimate. The Voltorb one is quite irksome as I'm pretty sure this would have affected a few other formats as well.

DaWob put out a Pull Request to fix this alongside an extra test for safety, which should fix the issue once merged.

With that, all minimum level validation should be fixed. Thank you for the report!
 

Plague von Karma

Banned deucer.
I've heard that Slowbro, Sycther and Pinsir were already fixed, if that is true, then the fix was not present maybe because the simulator was not restarted yet.
It was due to it not being merged and hotpatched yet, yes.

I did a Pull Request for the Pokemon you mentioned in the above post, and also found that Golem had a similar problem only in reverse, validating in international formats when it shouldn't be. That's covered by it. You also got Voltorb wrong by 1 number but that doesn't matter.

Anyway, as far as I can see, these patches are live on PS, so everything should be resolved. I think the Stadium events may still have some trouble though;
Screenshot_2021-09-09-00-04-32-94_40deb401b9ffe8e1df2f1cc5ba480b12.jpg

Screenshot_2021-09-09-00-04-04-82_40deb401b9ffe8e1df2f1cc5ba480b12.jpg
 

Users Who Are Viewing This Thread (Users: 1, Guests: 0)

Top