# DataPokemon Sun/Moon Battle Mechanics Research

#### sumwun

Sorry I wasn't clear earlier, but does lightning rod also redirect galvanized status moves that weren't originally targeted at the lightning rod Pokemon?
1) Yes, all random targets like this (e.g. Outrage, timing out, Encore random target) can never hit an ally.EDIT: My bad, I completely forgot in the moment that Dancer targeting isn't random at all; random targets will never choose an ally, but if you target your ally with the dance move, the Dancer Pokemon can use the attack on your ally.
Okay, so Pokemon a, b, c, and d are in a double battle. a and b are teammates, and c and d are teammates. d has dancer. If a or b uses feather dance on c or d, then d will use feather dance on a random one of a or b. If c uses feather dance on a or b, then d will still use feather dance on a random one of a or b. If a or b use feather dance on each other, then d will use feather dance on c. If c uses feather dance on d, then d will use feather dance on c. Is this right? Am I still making sense?

#### urkerab

I did some research on entry hazards (some of this may overlap with previously known information):
• Targeting an ally with Defog in Doubles will only remove entry hazards from your side of the field, but will not remove hazards from the opponent's side.
But presumably in this case it removes your screens etc. too?

#### DaWoblefet

##### Demonstrably so
Sorry I wasn't clear earlier, but does lightning rod also redirect galvanized status moves that weren't originally targeted at the lightning rod Pokemon?
Yes, it doesn't matter the original target. A Galvanized Roar targeted at any slot on the field will be redirected by LightningRod.

Okay, so Pokemon a, b, c, and d are in a double battle. a and b are teammates, and c and d are teammates. d has dancer. If a or b uses feather dance on c or d, then d will use feather dance on a random one of a or b.
No, because Dancer targeting is not random. If A uses FeatherDance on C or D, then D is forced to use Dancer FeatherDance on A, and if B uses FeatherDance on C or D, then D is forced to use Dancer FeatherDance on B.
If c uses feather dance on a or b, then d will still use feather dance on a random one of a or b.
No, because Dancer targeting is not random. If C uses FeatherDance on A, then D is forced to use Dancer FeatherDance on A, and if C uses FeatherDance on B, then D is forced to use Dancer FeatherDance on B.
If a or b use feather dance on each other, then d will use feather dance on c.
No. If A uses FeatherDance on B, then D is forced to use Dancer FeatherDance on A. If B uses FeatherDance on A, then D is forced to use Dancer FeatherDance on B.
If c uses feather dance on d, then d will use feather dance on c. Is this right? Am I still making sense?
Yes, this case is correctly stated. (While this information can be found in previous parts of this thread, I verified each of my findings about 10 times).

We could summarize these tests overall in the following way:
1. If a Pokemon uses a dance move on some target, then the Dancer Pokemon is forced to use new its dance move on that original dance move user.
2. If an ally to Dancer uses a dance move on some opposing target, then the Dancer Pokemon is forced to use its new dance move on that original target.
But presumably in this case it removes your screens etc. too?
Yes, Defog does remove your own screens (and it will not remove the opponent's screens).

#### sumwun

We could summarize these tests overall in the following way:
1. If a Pokemon uses a dance move on some target, then the Dancer Pokemon is forced to use new its dance move on that original dance move user.
2. If an ally to Dancer uses a dance move on some opposing target, then the Dancer Pokemon is forced to use its new dance move on that original target.
This appears to be not properly implemented.

#### DaWoblefet

##### Demonstrably so
Pokemon in the semi-invulnerable state cannot execute attacks from another source. This applies if the Pokemon was brought into the semi-invulnerable state by its own means (e.g. Fly) or was forced there by Sky Drop. That is,
• Dancer will not activate in the semi-invulnerable state.
• Magic Bounce and Magic Coat will not reflect / bounce bounceable moves and the Magic Bounce / Magic Coat Pokemon will be affected by the bounceable move as normal.
• Instruct, by means of No Guard, etc. will display "But it failed!". Instruct normally fails on two-turn moves anyway, but it will also fail when used on a target of Sky Drop that used some attack that would otherwise be Instructable.

#### Milkingmiltank

Hi so, a while back you guys had a stab boost indicator when you hovered your mouse over the move and it would say e.g:

Gliscore:
Earthquake - 150 physical

Why did you guys remove those ; also, you removed the reckless boost index when you would hover over the certain move that required recoil, just asking.

#### DaWoblefet

##### Demonstrably so
Hi so, a while back you guys had a stab boost indicator when you hovered your mouse over the move and it would say e.g:

Gliscore:
Earthquake - 150 physical

Why did you guys remove those ; also, you removed the reckless boost index when you would hover over the certain move that required recoil, just asking.
This thread is not the place for Showdown suggestions in any capacity, only for research pertaining to the actual games. You can post about your grievances with Showdown here if you wish.

#### VCrakeV

Does Mold Breaker ignore Pressure? I.e, will the pp of a Mold Breaker's moves drop by 2 when targeting a Pressure Pokemon?

Pressure is not one of the abilities that hinders the currently active move, so Mold Breaker does nothing against it. If you only have 1 PP left on a move but Pressure means it's supposed to cost 2, you only lose the 1 PP and still use the move at full effectiveness. There's no power penalty for not being able to cover the full PP cost, as long as you had at least 1 to begin with. Attempting to use a move when it already has 0 PP will fail, regardless of whether Pressure or Mold Breaker is involved.

#### Marty

##### Always more to find
In this replay I see a Solgaleo that is badly poisoned after the effects of Magic Room wear off. It did not use Conversion to remove Steel typing and I didn't use Toxic with Corrosion. How is it poisoned?

http://replay.pokemonshowdown.com/gen7balancedhackmons-923449103
Poison and Steel types can badly poison themselves if they have Corrosion and Toxic Orb, which is what happened here.

An actual bug I saw in that replay though: Judgment shouldn't be hitting anything super effectively during Magic Room, because Plates are disabled.
Edit: Judgment, Multi-Attack, and Techno Blast are now fixed on PS, thanks for posting the replay here!

Last edited:

#### Mysil

Ok, so I thought I knew how future sight works but now im not so sure. I thought that if I use nasty plot then future sight and switch out, those boosts would be taken into consideration when the attack hits later. From the replay im gonna post below it does not. What I also noticed is that if I use future sight then nasty plot and dont switch out, then the attack is boosted. Is this the way its supposed to be?

https://replay.pokemonshowdown.com/gen7uu-939547317

#### sumwun

Ok, so I thought I knew how future sight works but now im not so sure. I thought that if I use nasty plot then future sight and switch out, those boosts would be taken into consideration when the attack hits later. From the replay im gonna post below it does not. What I also noticed is that if I use future sight then nasty plot and dont switch out, then the attack is boosted. Is this the way its supposed to be?

https://replay.pokemonshowdown.com/gen7uu-939547317
Bulbapedia said:
Generation V
Future Sight now calculates its damage when it hits rather than when it is selected. Future Sight uses the user's Special Attack and the hit Pokémon's Special Defense at the time damage is dealt.
source

#### VCrakeV

If a poison or steel Pokemon gets soaked, then poisoned, will it remain poisoned after switching out (and switching back in)?

Yes, unless it has Natural Cure or Immunity.

#### urkerab

Foo's latest YouTube video claims that your accuracy and your opponent's evasion are combined and clamped before being used to modify the move's accuracy. Can anyone confirm or deny this?

#### DaWoblefet

##### Demonstrably so
Foo's latest YouTube video claims that your accuracy and your opponent's evasion are combined and clamped before being used to modify the move's accuracy. Can anyone confirm or deny this?
Accuracy/evasion modifier chaining isn't known at all; foofootoo typically isn't precise with mechanics like this. When Pokecheck did their battle disassembly in Gen 5, they made an explicit note that it's not just a raw multiplication, citing Sand Veil Bright Powder Garchomp as an example. Unfortunately, they never got around to documenting it, and unlike Speed modifiers, it is incredibly difficult to test accuracy/evasion modifier chaining empirically. Pokecheck's website has gone down, but they made a note of it themselves in their documentation:

// There are many problems with this function (written before research was completed)
// The accuracy system is ironically not accurate. This deserves an addentum to the damage calc article
// Accuracy works like the damage formula, using separate triggers for base value, accuracy and evasion
// Applying some modifiers to the stats rather than base value (e.g. BrightPowder) will ruin the rounding
// when chaining them (typical example: Sand Veil+BrightPowder Garchomp). Left as TODO for now
// (current simulators also implement accuracy mostly wrong, a ref would definitely help)
// The same problem also exists for speed - TODO document 21BC968 and the 0x13 trigger set
// It's interesting to note that global triggers (typically affecting the whole field and located in VRAM)
// such as Tailwind still apply when fainted. They should be implemented separately. TODO
Speed modifiers were documented by me, as well as fainted Speed order recognition, but that third category remains as mysterious as ever.

#### a loser

##### I'm a loser, baby, so why don't you kill me?
Not sure if I should post this in the bug fixes or here, but I'm trying it here.

I found out yesterday that the Protective Pads item is protecting attackers from the Innards Out ability. I don't believe this has always been the case, and I'm not sure if it is correct or not right now. Here's a replay showing an attacker with Protective Pads being protected from Innards Out. I know that Magic Guard doesn't take Innards Out damage, but I thought Protective Pads only blocked side effects from making contact.

https://replay.pokemonshowdown.com/gen7ou-963180451

Innards Out doesn't care if the fatal blow is contact or not, and Protective Pads should not be blocking it.

#### urkerab

Innards Out doesn't care if the fatal blow is contact or not, and Protective Pads should not be blocking it.
It's also protecting against damage Liquid Ooze and Jaboca Berry inflict on a user of Drain Punch. Oversight on my part. (It's currently assuming that any damage you get using a contact move is due to Aftermath, Iron Barbs, Rough Skin or Rocky Helmet. Now, do I special-case those four, or the other three?)

#### sumwun

Now, do I special-case those four, or the other three?)
I haven't read that part of the Showdown! code, but can't you just check whether the ability/item checks for contact?

#### urkerab

I haven't read that part of the Showdown! code, but can't you just check whether the ability/item checks for contact?

#### DaWoblefet

##### Demonstrably so
I did some research on healing moves and effects.

The following effects floor decimals on their healing (round down / truncate the decimals):
• `floor(maximumHP / 16)` - Grassy Terrain, Leftovers, Black Sludge (Poison-type), Ingrain, Aqua Ring, Rain Dish, Ice Body
• `floor(maximumHP / 8)` - Leech Seed (the amount of HP sapped from the target), Dry Skin (rain), Poison Heal, Shell Bell (sums the total damage the move dealt to all targets, then divides by 8)
• `floor(maximumHP / 4)` - Sitrus Berry, Enigma Berry, Present, Volt Absorb, Water Absorb, Dry Skin (Water-type move)
• `floor(maximumHP / 3)` - Cheek Pouch, Regenerator
• `floor(maximumHP / 2)` - super Sitrus Berries, Pollen Puff, Wish, Purify
The following effects use normal rounding with decimals on their healing (follow normal rounding rules, i.e. round up on 0.5):
• `normalRound(maximumHP / 2)` - Heal Order, Milk Drink, Recover, Roost, Slack Off, Soft-Boiled, Heal Pulse, Floral Healing
• `normalRound(maximumHP / 2)` - Absorb, Drain Punch, Dream Eater, Giga Drain, Horn Leech, Leech Life, Mega Drain, Parabolic Charge
• `normalRound((maximumHP * 3) / 4)` - Draining Kiss, Oblivion Wing
The following effects pokeRound their healing (follow normal rounding rules, but round down on 0.5)
• `pokeRound(maximumHP / 2)` - Morning Sun, Moonlight, Synthesis, Shore Up, Swallow (2 Stockpiles)
• `pokeRound(maximumHP / 4)` - Morning Sun, Moonlight, Synthesis (in rain/hail/sand), Swallow (1 Stockpile)
• `pokeRound((maximumHP * 2732) / 4096)` - Morning Sun, Moonlight, Synthesis (in sun), Shore Up (in sand), Floral Healing (with Grassy Terrain)
• `pokeRound((maximumHP * 3) / 4)` - Heal Pulse (Mega Launcher)
Big Root - `pokeRound((normallyRecoveredHP * 5324) / 4096)`. Determine the amount of HP recovered by the draining move/effect normally, then apply Big Root's multiplier with the given formula. The following are affected by Big Root: Leech Seed, Strength Sap, Absorb, Drain Punch, Dream Eater, Giga Drain, Horn Leech, Leech Life, Mega Drain, and Parabolic Charge.

Pain Split - Sums both the user and target's HP, then sets both the user and target's HP to `floor((userHP + targetHP) / 2)`.

Swallow (with 3 Stockpiles) - heals the user by its maximum amount of HP.
Rest / Healing Wish / Z-Parting Shot - heals the user to its maximum amount of HP.

Liquid Ooze - instead of healing HP, deal the exact damage the target would have recovered instead (so for example, Liquid Ooze accounts for the boost from Big Root).

When dealing with hacked HP stats, SadisticMystic summarized their behavior as follows:
"If anything tries to heal from full health, it doesn't; otherwise if heal amount + current HP (16-bit) fits within the max HP bar, set the new HP to that, otherwise recover to full"
Morning Sun, Moonlight, Synthesis, Purify, Shore Up, Wish - recovered 79 HP on 159 HP Smeargle.
Heal Order, Milk Drink, Recover, Roost, Slack Off, Soft-Boiled - recovered 80 HP on 159 HP Smeargle.

Heal Pulse, Floral Healing (no Grassy Terrain) - restored 80 HP to a 159 HP Smeargle.
Pollen Puff - restored 79 HP to a 159 HP Smeargle.
Present - restored 39 HP to a 159 HP Smeargle.
Floral Healing (Grassy Terrain) - restored 106 HP to a 159 HP Smeargle.
Floral Healing (Grassy Terrain) - restored 105 HP to a 158 HP Smeargle.
Floral Healing (Grassy Terrain) - restored 105 HP to a 157 HP Smeargle.
Floral Healing (Grassy Terrain) - recovered 344 HP on 515 HP Blissey (via Snatch).
Floral Healing (Grassy Terrain) - recovered 341 HP on 512 HP Blissey (via Snatch).

Swallow (1 Stockpile) - restored 40 HP to a 159 HP Smeargle.
Swallow (1 Stockpile) - restored 39 HP to a 158 HP Smeargle.
Swallow (2 Stockpile) - restored 79 HP to a 159 HP Smeargle.

Leftovers - restored 9 HP to a 159 HP Smeargle.
Aqua Ring - restored 9 HP to a 159 HP Smeargle.
Ingrain - restored 9 HP to a 159 HP Smeargle.
Ice Body - restored 9 HP to a 159 HP Bergmite.
Rain Dish - restored 11 HP to a 186 HP Blastoise.
Dry Skin (rain) - restored 19 HP to a 159 HP Toxicroak.
Dry Skin (Water-type move) - restored 39 HP to a 159 HP Toxicroak.
Leech Seed - stole 19 HP from a 159 HP Smeargle.
Grassy Terrain - restored 9 HP to a 159 HP Smeargle.
super Sitrus Berry - restored 87 HP to a 175 HP Tapu Fini.
Sitrus Berry - restored 43 HP to a 175 HP Tapu Fini.
Regenerator - restored 73 HP to a 221 HP Amoonguss.
Black Sludge - restored 11 HP to a 187 HP Grimer.
Volt Absorb - restored 36 HP to a 155 HP Thundurus-T.
Water Absorb - restored 32 HP to a 131 HP Poliwhirl.
Poison Heal - restored 19 HP to a 159 HP Gliscor
Mega Launcher Heal Pulse - restored 131 HP to a 175 HP Tapu Fini
Mega Launcher Heal Pulse - restored 118 HP to a 158 HP Smeargle
Mega Launcher Heal Pulse - restored 118 HP to a 157 HP Smeargle
Enigma Berry - restored 38 HP to a 155 HP Dedenne
Cheek Pouch - restored 51 HP to a 155 HP Dedenne

In rain:
Morning Sun, Moonlight, Synthesis - recovered 40 HP on 159 HP Smeargle.
Shore Up - recovered 79 HP on 159 HP Smeargle.

In sun:
Morning Sun, Moonlight, Synthesis - recovered 106 HP on 159 HP Smeargle.
Morning Sun, Moonlight, Synthesis - recovered 105 HP on 158 HP Smeargle.
Morning Sun, Moonlight, Synthesis - recovered 105 HP on 157 HP Smeargle.
Shore Up - recovered 79 HP on 159 HP Smeargle.

Morning Sun, Moonlight, Synthesis - recovered 344 HP on 515 HP Blissey (via Snatch).
Morning Sun, Moonlight, Synthesis - recovered 341 HP on 512 HP Blissey (via Snatch).

In sand:
Morning Sun, Moonlight, Synthesis - recovered 40 HP on 159 HP Smeargle.
Shore Up - recovered 106 HP on 159 HP Smeargle.
Shore Up - recovered 105 HP on 158 HP Smeargle.
Shore Up - recovered 105 HP on 157 HP Smeargle.

Shore Up - recovered 344 HP on 515 HP Blissey (via Snatch).
Shore Up - recovered 341 HP on 512 HP Blissey (via Snatch).

In hail:
Morning Sun, Moonlight, Synthesis - recovered 40 HP on 159 HP Smeargle.
Shore Up - recovered 79 HP on 159 HP Smeargle.

In strong winds:
Morning Sun, Moonlight, Synthesis - recovered 79 HP on 159 total HP Smeargle.
Shore Up - recovered 79 HP on 159 total HP Smeargle.

Draining moves:

Absorb - dealing 11 damage yielded 6 HP of recovery.
Drain Punch - dealing 11 damage yielded 6 HP of recovery.
Dream Eater - dealing 11 damage yielded 6 HP of recovery.
Giga Drain - dealing 11 damage yielded 6 HP of recovery.
Horn Leech - dealing 11 damage yielded 6 HP of recovery.
Leech Life - dealing 11 damage yielded 6 HP of recovery.
Mega Drain - dealing 11 damage yielded 6 HP of recovery.

Draining Kiss - dealing 11 damage yielded 8 HP of recovery.
Draining Kiss - dealing 13 damage yielded 10 HP of recovery.
Draining Kiss - dealing 14 damage yielded 11 HP of recovery.

Oblivion Wing - dealing 11 damage yielded 8 HP of recovery.
Oblivion Wing - dealing 13 damage yielded 10 HP of recovery.
Oblivion Wing - dealing 14 damage yielded 11 HP of recovery.
Oblivion Wing - dealing 22 damage yielded 17 HP of recovery.

Parabolic Charge - dealing 9 damage to an ally, 13 damage and 11 damage to an opponent: recovered 3 instances of 5 HP, 7 HP, and 6 HP.

Liquid Ooze - using Mega Drain dealing 11 damage to Liquid Ooze yielded 6 HP of damage recoil.
Liquid Ooze - triggers on Strength Sap.
Liquid Ooze - does not trigger on Shell Bell.
Liquid Ooze - Big Root Oblivion Wing dealing 11 damage to Liquid Ooze yielded 10 HP of damage recoil.

Shell Bell - dealing 11 damage yielded 1 HP of recovery.
Shell Bell - dealing 13 damage yielded 1 HP of recovery.
Shell Bell - dealing 52 damage yielded 6 HP of recovery.
Shell Bell - using Earthquake to deal 282, 158, and 13 damage resulted in recovering a single instance of 56 HP of recovery.
Shell Bell - using Rock Blast to deal 40, 40, 42, and 24 resulted in recovering a single instance of 18 HP of recovery.
Shell Bell - using Rock Blast to deal 13, 13, and 1 damage resulted in recovering a single instance of 3 HP of recovery.
Shell Bell - using Rock Blast to deal 11, 11, and 1 damage resulted in recovering a single instance of 2 HP of recovery.

Big Root - Big Root Oblivion Wing dealing 11 damage yielded 10 HP of recovery.
Big Root - Big Root Oblivion Wing dealing 13 damage yielded 13 HP of recovery.
Big Root - Big Root Oblivion Wing dealing 1 damage yielded 1 HP of recovery.
Big Root - Big Root Oblivion Wing dealing 31 damage yielded 30 HP of recovery.
Big Root - Big Root Oblivion Wing dealing 309 damage yielded 302 HP of recovery.
Big Root - Big Root Leech Seed, stole 35 HP from a 282 HP Pokemon and recovered 45 HP.

With special thanks to assistance from SadisticMystic:

Big Root - Big Root Oblivion Wing in Wonder Room brought a 683 HP Chansey down to Focus Sash, as a result dealing 682 damage. The Oblivion Wing user recovered 665 HP.

Parabolic Charge - OHKOing an 11 HP Cottonee, 141 HP Kecleon, and 153 HP Gengar with a single Parabolic Charge resulted in three separate, independent "drained health from" messages for 6 HP, 71 HP, and 77 HP.

Shell Bell - HP recovery comes after health recovered from a draining move (e.g. Giga Drain will recover HP, then Shell Bell will have the chance to restore HP). OHKOing an 11 HP Cottonee, 141 HP Kecleon, and 153 HP Gengar yielded a single instance of recovery: 38 HP.

Interactions with hacked HP stats:
• 43690/43692 HP using Moonlight out of sun "recovers" to 0 HP and faints.
• 24750/33000 HP using Moonlight in sun recovers to 33000 HP.
• A Pokemon with 1539 max HP using Moonlight in sun recovers 1027 HP.
• 49151/49152 HP using Rest recovers to 49152 HP.
• Z-Parting Shot and Healing Wish have the same behavior as Rest (no overflow).
• 49151/49152 HP using Swallow with 3 Stockpiles "recovers" to 32767 HP (49152+49151 = 98302, which overflows to 32767).
• Pain Split between 100 HP and 65500 HP averages both the user and target's HP to 32800.
• 65499/65500 HP with Leftovers "recovers" to 4056 HP. (This is because floor(65500/16) = 4093, and 4093 + 65499 = 69592 which overflows to 4056).
• 61681/61682 with Leftovers "recovers" to 0 HP and faints.

Last edited:

#### TurtleTiger

I have been looking everywhere for an answer to this. Can Suckerpunch hit before a pursuit that is acting on a switch?