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

All Gens Past Gens Research Thread

Question for Gen 4 only: In a doubles battle, if a Pokémon uses a spread move and the move is going to miss the slowest target, what happens first?
  • The fastest target takes damage
  • The miss message for the slowest target appears
 
Question for Gen 4 only: In a doubles battle, if a Pokémon uses a spread move and the move is going to miss the slowest target, what happens first?
  • The fastest target takes damage
  • The miss message for the slowest target appears
Yes the fastest target will take damage, secondary effects will occur and then the miss message will appear (see 5:30 on the first test listed in the spoiler). I decided to look into exactly which messages will appear during an attack, here is the order from my tests.

Order of messages, message only appears if applicable
  • Use move
    • Fastest target
  • Attack Miss
  • (Move Animation)
  • Type resist berry (Charti, Chilan, Chople etc)
  • (Damage is dealt)
  • Critical Hit
  • Anger Point
  • Endure
  • Super Effective/Not Very Effective
  • Secondary Effects
  • Ability Activations
  • Rowap/Jaboca/Enigma Berry
  • Target faints
  • Target thaws (hit by Fire Type move)
    • Next fastest target
  • Attack Miss
  • Type resist berry (Charti, Chilan, Chople etc)
  • (Damage is dealt)
  • Critical Hit
  • Anger Point
  • Endure
  • Super Effective/Not Very Effective
  • Secondary Effects
  • Ability Activations
  • Rowap/Jaboca/Enigma Berry
  • Target faints
  • Target thaws (hit by Fire Type move)
    • Next fastest target
  • …
    • All targets have been hit
  • Life Orb/Shell Bell (Shell Bell sums all damage dealt, so it does not round for each target)
 
Last edited:
Yes the fastest target will take damage, secondary effects will occur and then the miss message will appear (see 5:30 on the first test listed in the spoiler). I decided to look into exactly which messages will appear during an attack, here is the order from my tests.

Order of messages, message only appears if applicable
  • Use move
    • Fastest target
  • Attack Miss
  • (Move Animation)
  • Type resist berry (Charti, Chilan, Chople etc)
  • (Damage is dealt)
  • Critical Hit
  • Anger Point
  • Endure
  • Super Effective/Not Very Effective
  • Secondary Effects
  • Ability Activations
  • Rowap/Jaboca/Enigma Berry
  • Target faints
  • Target thaws (hit by Fire Type move)
    • Next fastest target
  • Attack Miss
  • Type resist berry (Charti, Chilan, Chople etc)
  • (Damage is dealt)
  • Critical Hit
  • Anger Point
  • Endure
  • Super Effective/Not Very Effective
  • Secondary Effects
  • Ability Activations
  • Rowap/Jaboca/Enigma Berry
  • Target faints
  • Target thaws (hit by Fire Type move)
    • Next fastest target
  • …
    • All targets have been hit
  • Life Orb/Shell Bell (Shell Bell sums all damage dealt, so it does not round for each target)
I thought this might be the case, since the damage is calculated separately, including the spread damage multiplier. I'll update my existing PR. Thanks!

Edit: the PR in question, already implemented it! https://github.com/smogon/pokemon-showdown/pull/11180
 
Last edited:
DaWoblefet gave me an idea to confirm that our implementation of Aromatherapy and Heal Bell in Gen 6+ is incorrect. I tested this in SM, and Electrify + Aromatherapy should trigger an ally’s Volt Absorb, healing the Pokémon but not curing its status.

Gen 5 is unknown territory. If anyone has ideas on how to test Heal Bell/Aromatherapy immunities in Gen 5—besides the well-known Soundproof and Sap Sipper immunities—feel free to share!

Edit: I need some time to finish the implementation. I'll add it here when it's ready. https://github.com/smogon/pokemon-showdown/pull/11787
 
Last edited:
Has it ever been possible to generate a Pokemon with 655 physical or special attack? If yes, what would happen if that Pokemon tries to use an attack move? Would the attack stat overflow? How much damage would it do?

Edit: Has it ever been possible to generate a Pokemon with negative level or stats or a move with negative base power? If yes, what would happen if that Pokemon tries to use an attack move?
 
Last edited:
DaWoblefet gave me an idea to confirm that our implementation of Aromatherapy and Heal Bell in Gen 6+ is incorrect. I tested this in SM, and Electrify + Aromatherapy should trigger an ally’s Volt Absorb, healing the Pokémon but not curing its status.

Gen 5 is unknown territory. If anyone has ideas on how to test Heal Bell/Aromatherapy immunities in Gen 5—besides the well-known Soundproof and Sap Sipper immunities—feel free to share!
Tested and I can confirm that the same is true for Liquid Voice and Galvanize in Gen 7.

I'm unable to think of any other ways to test this mechanic in Gen 5 aside from the two you mentioned - as far as I can think of there are no ways to change a move's type in Gen 5 aside from Normalize.

EDIT: For fun I decided to test this in Gen 3 using Electric-type Heal Bell from the HP Disobedience Glitch and it cured the teammate's status without activating Lightning Rod.
 
Last edited:
Research related to duplicate moves in old gens:
  • Disable
    • Current: if a move is Disabled, all slots of that move are disabled in the move selection menu.
    • Gen 2: only the first slot shows as disabled in the move menu, but any other slot of that same move will still fail in battle if you try to use it.
  • Encore
    • Current: the PP is deducted from the first slot.
    • Gen 4: Encore is triggered when the Fight button is selected, not allowing for target choice in doubles (random target). It deducts PP from the first slot of the move.
    • Gen 3: Encore now forces the exact slot that was actually used, and repeated turns keep taking PP from that same slot. If that exact slot runs out of PP, Encore ends.
  • Mimic
    • Current: if a Pokemon has two Mimics, Mimic replaces the first slot.
    • Gen 3: Mimic replaces the exact Mimic slot that was used.
  • Sketch
    • Current: if a Pokemon has two Sketches, Sketch replaces the first one.
    • Gen 3: Sketch replaces the exact Sketch slot that was used.
    • Gen 2: Sketch fails in Link Battles.
Edit: I made a mistake regarding Encore:
  • Encore
    • Gen 3: same as Gen 4 (it uses the first slot).
    • Gen 2: if the Pokémon was Encore'd before moving that turn, it will use the first slot with the move. If the Pokémon was Encore'd after moving that turn, it will deduct PP from that exact slot.
 
Last edited:
Quick double update involving everyone's favourite battle formats: Rotation Battles and Sky Battles!

In Rotation Battles, abilities that normally activate on switch-in can either activate when rotated in, or only when switched-in to the lead spot (with one exception). Here is a list of all the switch-in abilities I tested and whether they activate on rotation or not:

Group 1 (activates only when switched into the lead spot, not if rotated in):
Anticipation, Delta Stream, Desolate Land, Download, Drizzle, Drought, Forewarn, Frisk, Imposter, Intimidate, Primordial Sea, Sand Stream, Snow Warning, Trace

Group 2 (activates when rotated into the lead spot, not if inactive):
*Air Lock, *Aura Break, *Cloud Nine, *Dark Aura, *Fairy Aura, Flower Gift, *Mold Breaker, *Pressure, Slow Start, Unnerve
* = does not announce its activation when rotated in

Group 3 (always activates, no matter which spot it is in):
Illusion

In general, Group 1 abilities either interact with the opponent's Pokemon in some way or set weather, Group 2 abilities do not interact with the opponent's Pokemon or interact with the field rather than specific Pokemon, and Group 3 is Illusion because it's special.

Additionally, no abilities (besides Illusion) are kept track of while a Pokemon is rotated out (meaning that if you send in a Pokemon with Desolate Land, the weather will instantly stop when it is rotated out and will not restart if rotated back in), and Primal Reversion will only activate when Kyogre/Groudon are switched into the lead spot similar to the Group 1 abilities.



The in-game validator for Sky Battles is a little weird, and as far as I know no one's ever shared the exact order of how it checks legality. The logic of the validator is as follows:

1. If the Pokemon is Gengar (including Gengar-Mega), it is banned.
2. If the Pokemon has Levitate, it is allowed.
3. If the Pokemon is "standing" (see this list, minus Pinsir-Mega, which if hacked in is allowed), then it is banned.
4. If the Pokemon is Flying-type, it is allowed.
5. All other Pokemon are banned.

This means that through hacking, any Pokemon (besides Gengar) that is forced to have Levitate will be legal in Sky Battles, including "standing" Pokemon like Hawlucha and even Dugtrio. Nothing particularly groundbreaking, but thought it would be interesting to share.
 
Gen 1 is a gold mine of interesting interactions. When Metronome or Mirror Move calls a two-turn move, after PP is normally deducted, 1 PP is manually added to the calling move during the first turn execution, and in the second turn that PP is deducted back (resulting in a net -1).

For some reason, when a transformed Pokémon uses Mirror Move or Metronome, the execution path that increments PP is ran for that slot (as usual), but also for the original base slot in that same position even if the called move is not a two-turn move. As a result, if you transform into another Pokémon and repeatedly use Mirror Move or Metronome, the PP in your base slot will just keep increasing.

1774859702656.png
 
In Gen 3, when you are Encore'd, your action is submitted immediately after you click the Fight button. My question is: in doubles, do you target a random opponent or the last target?
 
Gen 3 Lightningrod doesn't have its immunity/SpA boost effect yet, that was introduced in Gen 5.
D'oh. Checked with Levitate and Ground-type Heal Bell and fortunately still got the same result: the Pokemon is healed without Levitate activating at all.

In Gen 3, when you are Encore'd, your action is submitted immediately after you click the Fight button. My question is: in doubles, do you target a random opponent or the last target?
In Gen 3, you target a random opponent when Encored.
 
What happens if a flying Arceus uses roost in each generation? Does it become ??? type, become normal type, not change its type, or something else? If it does change type, does its sprite or model also change?
 
Last edited:
Has return or frustration ever had an advantage over each other in any generation? Has friendship/happiness ever affected any other mechanics in competitive battling?
 
Has return or frustration ever had an advantage over each other in any generation? Has friendship/happiness ever affected any other mechanics in competitive battling?
Practically I would say there are few implications. However there are implications with respect to Transform / Imposter since the transform/imposter user will retain their own friendship value but gain Return/Frustration from the mon they copy. From an game theory exploitative strategy standpoint, since Return + 255 Friendship is the default, one ought to run 255 friendship on Ditto/ Transform users and 0 friendship + Frustration on your attackers in most metagames.

Of course, the nash equilbrium is probably closer to 50/50 mix on 0/255. In theory, you could even imagine some metagame where Dittos ought to run some intermediate value to not be fully walled by a setup sweeper running the opposite friendship level and mono self coverage (e.g. a dnite with return/frustration + eq coverage).
 
In Gens 3 and 4 only, if a Pokémon's move fails because of a status or volatile condition such as paralysis, sleep, freeze, Disable, flinch, Taunt, etc., the "last move used" flag used by moves like Encore, Disable, Mimic and Spite is cleared, causing those moves to fail. The only moves that use different flags, that are not cleared, are Mirror Move and Sketch.

Scenario, assuming Pokémon A is faster:
  • Turn 1: Pokémon A uses Tackle; Pokémon B does whatever.
  • Turn 2: Pokémon A selects Growl but is fully paralyzed; Pokémon B uses Encore.
In Gens 3 and 4, Encore would fail. In Gens 5+, Pokémon A is encored into Tackle.

In Gen 2, Pokémon A is also Encored into Tackle, but PP is deducted from Growl, the last selected move slot.

Tested in Gens 2-5.



Small Gen 2 correction: PP would only be deducted from Growl if Pokémon A tried to act that turn before being Encored. If Pokémon A tried to use Growl and was fully paralyzed on Turn 2, and then, on Turn 3, a faster opponent uses Encore on it, Pokémon A will use Tackle and PP will be deducted from Tackle.

This happens because, in Gen 2, the move slot from which Encore deducts PP varies. If the Encored Pokémon has already acted or tried to act that turn, PP is deducted from the last selected move slot (Growl). However, if the Pokémon has not yet had the opportunity to act, Encore deducts PP from the first move slot containing the Encored move (Tackle).



Another extra: In Gens 5+, if a Pokémon gets Encored into the move it is already trying to use, it targets the original target. In Gens 3 and 4, however, the target is always randomized.
 
Last edited:
Probably useless but still intriguing fact I noticed today: It turns out it's not just in Gen 2 where Struggle can get item boosts as I noted earlier.

I checked the readily available decomps on GitHub for Gen 3 (Emerald) and 4 (HeartGold), and I also found that Struggle could be boosted by the Silk Scarf in those games. I tested it in-game, and sure enough...

silk-scarf-2.png

silk-scarf.png


In both cases, I used a Hardy nature Abra with 31 attack IVs and 0 EVs, varying only level. Without an item boost, Struggle would need a crit. With an item boost, Struggle is predicted to have an OHKO range.
 
I went through the Order of Move Success Checks in Gens 1-4 (some I tested, for others, I went through the decompiled code) and compared it to Gen 8 as reported here: https://www.smogon.com/forums/threads/sword-shield-battle-mechanics-research.3655528/post-8548957. The results are in the table below.

You can ignore the numbers in the left column, those are just the priority values used internally by us. What matters is the order. "Disable (timer)" appears in Gens 1 and 2 because the timer decreases before Confusion/Infatuation, but Disable only blocks move execution after those effects.

BeforeMovePriorityGen 8Gen 4Gen 3Gen 2Gen 1
14———Recharge—
13—SleepSleepSleepSleep
12Sky DropFreezeFreezeFreezeFreeze
11RechargeTruantTruant——
10Sleep/FreezeRechargeRecharge—Wrap
9TruantFlinchFlinchFlinchFlinch
8FlinchDisableDisable—Recharge
7DisableTauntTaunt——
6Gravity/Heal BlockImprisonImprison——
5TauntGravity—Disable (timer)Disable (timer)
4ImprisonHeal Block—ConfusionConfusion
3ConfusionConfusionConfusionAttract—
2ParalysisParalysisParalysisDisableDisable
1AttractAttractAttractParalysisParalysis

I wanted to test some stuff in Gen 5 to check whether it is the same as Gen 8, and indeed, Recharge triggers before sleep.

I also wanted to check Taunt vs Heal Block and Gravity vs Imprison, but that requires 2 players, since both effects need to be applied on the same turn as the move execution failure. Otherwise, you can’t select the moves afterwards. If someone wants to test those 2 scenarios, feel free!
 
I'm finishing some things for Gen 1, but I want to share this very cool thing that I found.

There is a glitch that I haven't found documented anywhere else. It's an edge case of desync glitches triggered by thawing. When a Pokémon is thawed while its team hasn't selected a move yet, the variable wPlayerMoveSelected (that holds the last selected move by the player) is still 00, which corresponds to NO_MOVE. If that Pokémon is slower and can still act in that turn, the game loads garbage data into that move's variables.

Because of the way game data is distributed, we can trace it back to Raticate's data. In the end, the Pokemon uses a move with no name (the displayed message is "<Pokemon> used !") with Fissure's animation, 102 base power, ??? type, Special category, and around 31.6% accuracy. PP is still deducted from the Pokémon's first slot.

Here is how the fields are populated:
  • wPlayerMoveNum: Raticate catch rate = 0x5A = Fissure
  • wPlayerMoveEffect: Raticate base EXP = 0x74 = invalid effect index
  • wPlayerMovePower: Raticate pic size = 0x66 = 102 base power
  • wPlayerMoveType: RaticatePicFront low = 0x31 = invalid type (Special category)
  • wPlayerMoveAccuracy: RaticatePicFront high = 0x51 = 81/256 accuracy (about 31.6%)
  • wPlayerMoveMaxPP: RaticatePicBack low = 0x0A = 10 max PP
In a link battle, this would always result in a desync because the opponent would see the thawed Pokémon use the move in its first slot. However, in an NPC battle, or in a link battle from the player's point of view, this NO_MOVE would be the move used.

I'll make a big detailed post with all the known desyncs and explain why they happen from a technical point of view, so future developers can understand them more easily. It's hard to keep track and understand all of them from PS's code alone.

Edit: Apparently, this bug is known and partially documented here https://bulbapedia.bulbagarden.net/wiki/List_of_battle_glitches_in_Generation_I#Defrost_move_forcing
 
Last edited:
I have found another Counter desync that I've never seen documented. Let's call it "Counter vs sleeping first-slot Counter".

If player 1 switches to a sleeping Pokémon that has Counter in its first moveslot, and on the following turn, player 2 uses Counter while player 1 spends the turn asleep, Counter will always fail from player 2's point of view, but it may hit from player 1's point of view.
Example:
  • Both Chansey and Snorlax use Tackle.
  • Chansey uses Tackle as Snorlax switches into a sleeping Cloyster with Counter as its first move.
  • Chansey uses Counter as Cloyster sleeps.
Chansey's trainer will always see Counter fail, while Cloyster's trainer may see Counter hit if the last move used by Cloyster's team was counterable.

I'll put the technical details in the future post.
 
Here is the post with all Gen 1 desyncs and the new Desync Clause Mod resolutions:
 
Last edited:
Team Preview in Pokemon XD and Battle Revolution should not reveal the opponent's levels. In Stadium 1 and 2 it does, however. In my view this would mean that ideally Gen 3/4 team preview on showdown would reflect the same behaviour, but it is not too significant.
Stad1Preview.jpg
Stad2Preview.jpg
XDPreview.jpg

XDLevel.jpg
PBRPreview.jpg

PBRLevel.jpg
 
Back
Top