Ultra Sun & Ultra Moon Battle Mechanics Research (Read Post #2)

Tried it out in the simulator? I thoroughly tested Rollout and Thrash on cartridge, but only Ice ball/Rollout under different Sleep Scenarios in the Simulator. Then its a failure on both our parts for not checking the other move family. I even provided a Screenshot in the Bug Report.
Indeed, I'd failed to try Ice Ball in the simulator, but I see the problem, thanks!
 
What if the original move used is Rollout with one or more hits breaking Disguise, and then the user uses Ice Ball into Protect, or vice versa? Will the multiplier reset?
Oh wow it's a lot deeper than I thought. So to summarize:
  • Disguise increments Rollout #, but not Rollout Multiplier. Even all 5 multipliers can be delayed.
  • Rollout Multiplier does not reset unless a Rollout/Ice Ball fails
  • Pokemon using Rollout/Ice Ball during this state will not be locked into Rollout/Ice Ball
  • Rollout Multiplier increases for every successful move, even if it's not Rollout/Ice Ball, until it hits Rollout Multiplier 5
Is this correct?
Another unexpected result. If you start the glitch using Ice Ball, the glitch will only Reset prematurely if Ice Ball fails. Failing Rollout will be fine in that case. I tested the reverse and also found it true.

And the Multplier doesn't increase with every successful move per se, rather with every successful hit. Multi-Hit-Moves like Water Shuriken advance the Counter by one every time they hit.
 
In the aftermath of Rollout storage, I managed to hypothesize a phenomenon that, upon testing, seems to be accurate: specifically, the game only stores 32 bits at a time in the middle of damage calculation, and results that overflow that range by only a slight margin can wrap around to pretty low values.

Testing with DaWoblefet produced the following:
Battle Video 1: GBXG-WWWW-WWWL-YQNC
Battle Video 2: AHMW-WWWW-WWWL-YQN7

Battle 1 is based on the calculation 42 * 15840 * 6456 = 4,295,047,680, where that last number represents 2^32 plus 80,384. I found that breakdown by looking through multiples of 17280 (a factor that setups of this type are highly likely to have) to find one that breaks down into three components that can reasonably exist separately in the same damage calculation. Specifically, 42 is what level 100 gets morphed into before it gets multiplied by anything, 15840 represents a 220-power move that has two Helping Hand boosts applied plus the full 32x effect of Rollout storage, and 6456 can be obtained as an attack stat by starting with a stat of 269 and applying +6, Light Ball, Huge Power, and Flower Gift in sun. Since it had to be a physical move to get all those multipliers in place, Power Trip (with exactly 10 boosts, 6 of which are already accounted for in attack) immediately came to mind as the move to use. Pikachu is incapable of naturally going to to 269 on its attack stat, so it had to receive the benefit of one Power Split.

As I assumed, if the register could only hold 32 bits there, then instead of 4 billion-plus, the formula was dealing with just 80384 at that point. The next step in the damage formula was a division by the opponent's defense (which was 1 in this case, thus a no-op) then a division by 50, reducing it to 1607 (which then meeds the static +2 to go to 1609), even if it "rightfully" should have been around 86 million if the system used 64-bit registers. Still too big to be compared against a health bar, but at least within striking distance.

The goal, then, instead of taking Hoopa's Psychic/Ghost typing and generally going overboard on positive multipliers, was to squeeze in lots of fractional multipliers to reduce the damage, but only ones that specifically do not show up until after the division by 50. First up is the random roll, which diffuses from a straight 1609 to a range between 1367 and 1609. Then there's typing, using Pangoro's type to get a double resist (341 to 402), and the fact that Pikachu could be given a burn. Since the transformed Mew kept Smeargle's low defense stats but kept its own HP, then, I figured it would survive with a damage range between 170 and 201. (Reflect could be added on as well, but that would have made the setup longer and wasn't necessary to get into a range that Mew survives.) If not for the overflow in mid-calculation, the damage would have been around 10 million--clearly too much for anything to handle.

Instead, the actual damage was 74, which evidently agrees with the fact that an overflow of some kind was happening, but doesn't agree with where I had it positioned.

One thing I wasn't certain about here was whether Power Trip's variable power even plays nicely with the Rollout multiplier that got stored. After all, Smogon's documentation on the damage formula dates back to G5, a time when Power Trip didn't even exist, so I don't know the mechanism behind their modifier, or where it lands in modifier order (the three most logical guesses would be next to Punishment, next to Stored Power, or at the very end of the move-specific code). As such, I wanted to develop at least one scenario that didn't depend on Power Trip as the move.

The numbers I found for that, giving rise to battle 2, were 40 * 18720 * 5736 = 4,295,116,800, which is 2^32 + 149,504--a larger margin of overrun than in battle 1, but still possibly low enough to work with. That breaks down as 40 calling for an attacker's level of 95, 96, or 97 (instead of 100), 18720 as before but where the move power is 260 instead of 220, and 5736 calling for Pikachu's starting attack stat to be 239 instead of 269. That's still too high to reach innately, but it's just one Power Split away all the same, and the infrastructure was already there so it's no more of a hassle. 260 seems pretty high to reach with a move as well, but instead of using Power Trip + 12 boosts, I noticed that it could also be realized as Bolt Strike + Charge.

With that in place, we assume that the register wraps around to 149504 after multiplying all those factors together, then divide by 1 again, then 50 (2990), then add 2 (2992). The random roll gives the range 2543-2992, then the double resist gives 635-748, and the burn makes it 317-374 which is just enough reduction to fit within Mew's 404 HP.

As it turns out, the actual damage in this case was 347, which is right in line with that estimate; in fact it corresponds to the 93% damage roll.

Based on the results of these tests, I'm inclined to believe that I have the overflow mechanism spot-on (if an intermediate result of a calculation at any point in the damage formula goes over 4294967295, take the mod-2^32 at that point and proceed with only that portion), but since the damage from Power Trip was so much lower than expected (by less than half), there seems to be something about that move, and possibly also Stored Power, that isn't adequately captured in our current understanding of the damage formula.
 
Last edited:

DaWoblefet

Demonstrably so
is a Battle Simulator Administratoris a Community Leaderis a Programmeris a Community Contributoris a Top Researcheris a Top Tiering Contributoris a Social Media Contributor Alumnus
PS Admin
If you'd like to see the testing SadisticMystic and I did live, you can watch the Twitch VOD here (will update with YouTube video later) EDIT: here.

User csblissy suggested that the reason Rollout may be doubling is not particularly because of Disguise, but moreso because the Rollout deals 0 damage; this would be consistent with the idea that checks for Rollout's multiplier and Rollout's counter are independent. Here's csblissy's pseudocode of the idea:

While (Rollout active);
If Damage(Rollout ge 1) then do; RolloutCounter+;
Else if Accuracy(Rollout=miss) then do;
RolloutCounter=0/1;

END;

This would imply we could replicate similar behavior if we caused Rollout to deal 0 damage. This was possible in Generation 5, because final modifiers like type-resist Berries and Reflect / Light Screen happened after the "is this 1 damage?" check. However, I just tested in Generation 7 with a level 90 Bronzong with Reflect holding a Chilan Berry against a wild level 3 Buneary, and the Buneary's Pound dealt one damage, so the "is this 1 damage?" check must have changed at some point between BW and USUM (I apologize if this is known information). Nevertheless, it may be useful to test if the Rollout glitch can be replicated in Generation V by having one of the hits of Rollout deal 0 damage.

EDIT: Marty said he's already tested with Sturdy Shedinja, so this theory is debunked. Apparently the 1 damage check changed starting in XY.
 
Last edited:
If you'd like to see the testing SadisticMystic and I did live, you can watch the Twitch VOD here (will update with YouTube video later).

User csblissy suggested that the reason Rollout may be doubling is not particularly because of Disguise, but moreso because the Rollout deals 0 damage; this would be consistent with the idea that checks for Rollout's multiplier and Rollout's counter are independent. Here's csblissy's pseudocode of the idea:

While (Rollout active);
If Damage(Rollout ge 1) then do; RolloutCounter+;
Else if Accuracy(Rollout=miss) then do;
RolloutCounter=0/1;

END;

This would imply we could replicate similar behavior if we caused Rollout to deal 0 damage. This was possible in Generation 5, because final modifiers like type-resist Berries and Reflect / Light Screen happened after the "is this 1 damage?" check. However, I just tested in Generation 7 with a level 90 Bronzong with Reflect holding a Chilan Berry against a wild level 3 Buneary, and the Buneary's Pound dealt one damage, so the "is this 1 damage?" check must have changed at some point between BW and USUM (I apologize if this is known information). Nevertheless, it may be useful to test if the Rollout glitch can be replicated in Generation V by having one of the hits of Rollout deal 0 damage.

EDIT: Marty said he's already tested with Sturdy Shedinja, so this theory is debunked. Apparently the 1 damage check changed starting in XY.
My guess is that Disguise skips the damage calculation altogether. Might explain why the glitch can be triggered by having your turn skipped with Sky Drop. Rollout remains active, but you didn't get to execute the move and the multiplier doesn't advance. Weakness Policy and Type resistent Berries don't activate under Disguise, even though the latter are part of the Damage formula. Attacks don't register as super effective at that point, so I believe it's being skipped.
 
Last edited:

Marty

Always more to find
is a Site Content Manageris a Battle Simulator Administratoris a Programmeris a Member of Senior Staffis a Community Contributoris a Top Researcheris a Top Tiering Contributor
Research Leader
Only relevant for hackmons, but Neuroforce and Expert Belt stack. I'm not exactly sure how though. Damage formula was probably altered to put Neuroforce in there as its own instance, since it stacks with Ebelt in a way that creates "impossible" damage rolls (something that no combination of stats/abilities/items can roll with the current formula as far as I can tell).
Probably because you mistakenly reported that the Neuroforce boost = Expert Belt boost. Neuroforce is actually 1.25x. Updating PS right now!

Thanks again to OZY and his research team: and http://bbs10.aimix-z.com/mtpt.cgi?room=sonota&mode=view2&f=140&no=48-49

Verified myself; the rolls are totally different from Expert Belt.
 
I don't know the details for the bandwidth available during each "modifier" (whether it multiplies those numbers together in 44-bit context before chopping off the lowest 12 bits/right-shifting 12 times), and the Bolt Strike test was designed not to care about that implementation detail: multiplying together L*P*A isn't a modifier, just a raw multiplication, and all the modifiers are at the level of a single one of those terms where the numbers involved are too small to matter. The test was simply for whether 40 * 18720 * 5736 overflowed, and it did.

I do have another test suite in mind, this time targeting a different part of the formula, but it's understandably a lot harder to get an actual test of it.
Demo battle: https://replay.pokemonshowdown.com/gen7doublesubers-735481639
Attacker's outline: http://dpaste.com/1WFVV8R.txt
Defender's outline: http://dpaste.com/1MQ56KN.txt

For L, .4 x 94 is 37.6, then add 2 and round down to get 39;
For P, V-create is 180 with three Helping Hands and full Rollout storage to get 19440;
For A, both Power Splits leave the high Smeargle at 386 for its raw attack stat. +3 makes that 965, and Flower Gift makes it 1447.
Multiplying together those L, P, and A values leave us with 1,097,057,520, which doesn't overflow, so it safely divides by 50 and adds 2 to get to 21,941,152. But now, unlike in the Bolt Strike case, there are modifiers that apply to that entire product. Fire move in sun is a 0x1800 modifier (or 1.5x multiplier); if it turns out the game is still using 32-bit precision in this context, it will overflow when trying to multiply by 6144, and at the conclusion of the modifier, the damage will be reduced to 405,872 (which is still too big to incorporate into a test, so I'd need to design a separate one). If, on the other hand, it's capable of storing larger numbers just fine at the modifier stage (which I'm hoping for, at least for the purposes of this test), it will remain a safe 32,911,728 after applying weather, and 49,367,592 after applying the critical bonus.

Here's the rub, because up next is the random factor, and this test hinges on whether it's possible to get an overflow at that step. I don't know whether the random step is actually "multiply by the random number, then divide by 100 separately", or if it somehow attempts to multiply by some value that represents the fraction (as though it were a modifier). But if it exists as two discrete steps AND the random roll is exactly 87%, then multiplying by 87 will result in 4,294,980,504, which could overflow to just 13208. Then the separate division by 100, burn, and type resist steps would reduce that to just 16 damage, enough that the level 3 Smeargle survives without needing a L100 Mew to transform into it to have a larger target of a health bar to aim for.

Because this test is absolutely dependent on getting a blind 1/16 random roll at the end, I designed everything to be set up in just 7 turns (which takes about 7 minutes to play out with animations on, as they're forced in wifi battles) and, within that constraint, to be as reliable as possible: the critical hit is a guarantee, and other than the damage variation roll, there are just four accuracy checks at 99%, 99%, 90%, and 95% respectively. This makes it as suitable as possible for setting up large numbers of iterations, but because the success chance is so low to begin with, there's no way to tell if any number of tests simply haven't produced the 87% roll at all, or if it has but the mechanics don't work that way (such as by overflowing at the weather step instead). If it does work the way I anticipated, and Smeargle does survive the hit with 3 HP left, clearly one success is all it takes to demonstrate that, but you could be going quite a while in search for it. So far I've only been able to arrange 7 iterations of the test with one opponent, and no visible successes among them, which is a meager 27.5% confidence level that there's been a false negative in that time. If anyone wants to contribute more trials, just make sure you have the team aspects replicated exactly, and be ready to upload the battle video if you do hit upon the success (or if you want me to be the opponent for some trials, just reach out somehow).

I could probably come up with a set of numbers to test for "what if it does overflow on the weather step?", but I want to make sure my tests are comperessed and reliable before releasing them, and that might take some time to streamline.
 
Last edited:
Double-posting, but I wanted the it to be known that yes, the damage can overflow even in the middle of a modifier. Because modifiers involve multiplying by fairly big numbers like 6144 (with a subsequent division), instead of 1.5, the overflow point is much more accessible with those, to the point that this could be done in 4 turns and with no Rollout storage at all (so the same mechanic probably still works in G6 games).

Battle video (with Eisenherz as the testing partner this time): 55VG-WWWW-WWWL-UQGX
Demo of battle plan from Showdown: https://replay.pokemonshowdown.com/gen7doublesubers-737247490

Mewtwo's attack stat was 346 before going mega, which becomes 522 afterward. Level 74 turns into 31; 522 at +6 with Huge Power and Flower Gift becomes 6264; and Me First Flare Blitz is 180. Multiply together for 34,953,120, divide and add for 699,064, and during the weather modifier, x6144 gives 4,295,049,216 (or an overflow to 81,920) before the right-shift by 12, or division by 4096, lands on a nice clean 20. Type resistance then knocked it down to 10, small enough that the level 1 Growlithe was actually able to survive (with the random roll also able to chop off 1-2 more damage from there, so it really ended up taking just 9).

This means that there are a few more potential overflow points we have to dodge, some of which would have been eminently discoverable before if only someone had bothered to construct the test suite for them. It does mean the max damage setup takes a big hit, since basically anything in the final modifier except type advantage is unusable without causing an overflow, so an accurate accounting of damage will never even be able to get as high as 344 million (unless, of course, they fix the modifier implementation in a future game).

[EDIT] Now watchable on YouTube.
 
Last edited:
I also found something unrelated completely by accident. Normally, if you use Sleep Talk and call Rollout/Ice Ball or Petal Dance/Outrage/Trash, you do not get locked into the move. However, if Komala uses these moves via Sleep Talk instead, it does get locked into the respective move. This is wrongly implemented in the simulation, the Komala part is right, but every other Mon that calls this move via Sleep Talk while sleeping also gets locked into it.
Hmm, how does this interact with the Disguise glitch? If a Pokemon were to exit Rollout with a stored BP modifier that has at least two hits left to it, and the penultimate hit were to be Rollout called via Sleep Talk, would this cause the multiplier to be lost prematurely?
 
Hmm, how does this interact with the Disguise glitch? If a Pokemon were to exit Rollout with a stored BP modifier that has at least two hits left to it, and the penultimate hit were to be Rollout called via Sleep Talk, would this cause the multiplier to be lost prematurely?
Thought of a couple more questions to add to this:
  • If you store multiple hits worth of Rollout or Ice Ball, and then start using the other move, would the overlapping multipliers stack? Does that mean you could save up 5 hits of Rollout, and then start Ice Ball to have a final hit with a x1024 BP modifier?
  • If a Pokemon with a stored multiplier uses a move with a fixed damage output such as Seismic Toss, is the multiplier incremented, maintained, or lost? I would assume maintained, but it doesn't hurt to be sure.
 
I did some more exploration of Rollout with what I could get in game. Normally my single-player testbed involves tracking down a wild Ditto so I can at least control what stats and moves the opponent has, but in this case that doesn't really work. What I have to do instead is use the Game Freak double battle against Morimoto/Iwao, KO all the opponents except a lone, relatively passive Ambipom, then set everything up including a friendly fire Rollout.

First, and most easily tested: if you have a stored Rollout multiplier and your next attack is something that doesn't use the damage formula, like Seismic Toss or Super Fang, the multiplier remains stored until you use some other attack that does consume it. This makes sense; the core reason for the multiplier becoming unattached in the first place is that some of the processing for Rollout's multiplier is performed within the damage formula, and Seismic Toss isn't running that code either.

For these tests, I enlisted the help of a Rollout Blissey from VC Gold; obviously it brought Defense Curl and Rollout, as well as Curse, and the fourth slot was filled with various (often illegal) moves to examine one at a time. Its relevant benchmarks are 25 Attack (to have lots of leeway to check damage ranges without being at risk of KOing my own teammates) and 146 speed (it really only needs to be faster than Ambipom's 142, because after the switch to Mimikyu, Blissey needs to be the one who gets to strike first and break the disguise).

I'm still trying to figure out what happened in that first overflow test, as 74 damage is simply too low for any explanation I can find, So I thought I'd investigate Rollout-boosted Power Trip in cases where it isn't threatening to deal millions of damage if not for the byte cap. Instead of going after a level 1 Smeargle, the victim this time would be a Pangoro with 205 defense, with stored Rollout and various numbers of Curses prior to the Power Trip. Measured results:
+1 attack, +2 defense (nominal 80 BP on Power Trip) - 22 damage
+4 attack, +5 defense (nominal 200 BP) - 44 damage
+6 attack, +6 defense (nominal 260 BP) - 62 damage
Given the way Power Trip is supposed to scale along with the attack stat itself, those numbers didn't make sense. But I could just about see something close to an explanation, if I could test a couple more variable-power moves. First up, max-happiness +0 Frustration against 361-defense Suicune. Even with STAB and stored Rollout, that was bound not to do much, and indeed it only dealt 3 damage. Okay, how about max-happiness Return then...and that also dealt just 3!

By this point I think I've figured out what's going on: some moves with variable power make a call to a function that determines what that power should be. Rollout's own escalating multiplier is handled in this function, and as long as there's an active multiplier, the function applies that multiplier to the exclusion of any other variable-power scripts. So for Return, instead of finding a number in the range 1-102, the variable-power function just says "Apply that lingering 32x multiplier to whatever your move power is, then exit." In the case of Rollout itself, this procedure gives the right number normally, since its default power is 30. But in Return's case, the default power is coded as 1, despite every intention of this number being merely a placeholder that's supposed to be clobbered by that function. Both Return and Frustration are thus counting as 32-BP moves after the stored multiplier, which obviously isn't an impressive demonstration of this mechanic's power.

I tried several other moves: Gyro Ball, Electro Ball, Low Kick, even Fling (holding a fossil), and all of those turned up as 1 power--32 after the multiplier. (The item was still removed for the rest of the battle in Fling's case.) But not all variable-power moves hold a 1 as their placeholder power: Rollout uses 30 as you've already seen, Eruption and Water Spout properly use their max 150, and those Power Trip numbers from above make perfect sense now with Power Trip starting from its default, no-boost power of 20 (and becoming 640).

Just to be thorough, I tried another run with Power Trip with Blissey boosting all the way to 6 curses after the Rollout finished, then I brought in a Ditto and had that transform into Blissey. Ditto's version of Power Trip aimed at the original was good for 38 damage, consistent with the nominal 260 power that Power Trip is supposed to have at that boost level, then Blissey's own retaliation dealt 103 which again points to the 640-power figure. This means that "I have a lingering Rollout multiplier" is not a piece of state information that can get copied by Transform...which makes sense, because if you transform into a Pokemon that's in the middle of a normal Rollout rampage, you don't get immediately locked into the same rampage they are.

There are definitely some meaningful discoveries from that, but none of them get any closer to solving the mystery of that original 74 damage. By my reckoning, if Power Trip was really being treated as a 640-power move (instead of the 7040-power assumption that would have made the math neater), the damage range should be 829,725 to 976,147 (and the numbers would actually be lower without the burn, at 610,874-903,718). These numbers are obviously far too large to detect in any form by taking the hit, so now the question becomes how these numbers get into a range to overflow at all (as they would without the burn), let alone to land so neatly past the zero point and stop on 74.
 
What number would a Z-move get? As the basic 17 has 1 as its base power, though it visibly changes depending on the move you use.

Edit: Also for multi-hit moves like double slap, does the power apply for only the first hit, or all of them? Finally Parental bond doesn't activate for Rollout, but should still hit twice using this gitch. Does the second hit still have the rollout boost?
 
Last edited:
A Z-move's power is set to the "proper" power before it ever touches the damage formula, so it doesn't have to worry about the "ignore variable power and use 1" quirk.

If you use a single-turn, multi-hit move (including a move that Parental Bond applies to) while Rollout storage is in effect, the first hit consumes the multiplier, leaving the rest to hit for normal damage.
 
It's sounds akward to say that the first hit consumes the mulitplier rather than that it advances it. If you stored two Rollout hits, the first of the multi-hit hits has its power multiplied by 2^4 and the next one by 2^5. After that it drops to normal levels.
 

a loser

I'm a loser, baby, so why don't you kill me?
is a Tiering Contributoris a Contributor to Smogonis a Community Contributor Alumnus
Not sure if this has been discussed.

Spirit Shackle and Anchor Shot are both trapping moves that are boosted by Sheer Force.

Thousand Waves is another trapping move but is not boosted. What's the reasoning for that?
 

dhelmise

everything is embarrassing
is a Site Content Manageris a Battle Simulator Administratoris a Top Social Media Contributoris a Community Leaderis a Programmeris a Community Contributoris a Top Contributoris a Top Smogon Media Contributoris a Top Dedicated Tournament Hostis a Smogon Discord Contributor Alumnus
Social Media Head
Not sure if this has been discussed.

Spirit Shackle and Anchor Shot are both trapping moves that are boosted by Sheer Force.

Thousand Waves is another trapping move but is not boosted. What's the reasoning for that?
The reasoning is game freak made spirit shackle and anchor shot boosted by sheer force but not thousand waves

E: I’m on phone so sorry if this seens rude or smth I’ll edit it when I have comp access
 

a loser

I'm a loser, baby, so why don't you kill me?
is a Tiering Contributoris a Contributor to Smogonis a Community Contributor Alumnus
The reasoning is game freak made spirit shackle and anchor shot boosted by sheer force but not thousand waves
Well yeah I can see that. Just doesn't make much sense. Oh well.

RIP Sheer Force Garchomp in BH.
 
I presume then that a Pokemon with Shield Dust gets trapped by Thousand Waves, right?

Considering how Zygarde's other moves are all about ignoring some mechanic (flying for Thousand Arrows and abilities for Core Enforcer) it wouldn't be surprising if Thousand Waves had that particularity as well.
 

DaWoblefet

Demonstrably so
is a Battle Simulator Administratoris a Community Leaderis a Programmeris a Community Contributoris a Top Researcheris a Top Tiering Contributoris a Social Media Contributor Alumnus
PS Admin
A big discovery with Stomping Tantrum was discovered recently that I haven't seen anyone report on formally yet. If a spread move hits into a Protect and the other target of the spread move reaches a Stomping Tantrum condition for failure, then the following turn's Stomping Tantrum will be doubled. For example, using Precipice Blades into Levitate + Protect will double Stomping Tantrum, missing a Precipice Blades and landing into a Flying-type will double Stomping Tantrum, and using Earthquake into a Protect and two Flying-types will double Stomping Tantrum. This is presumably because of the rearrangement of checks done before a move can successfully hit a target in Generation 7 as documented by Marty:
Check for attack redirection by Follow Me / Lightning Rod / Storm Drain - Follow Me has priority
  • Check each target for Wide Guard / Quick Guard
  • Check each target for Protect / Detect
  • Check each target for Magic Coat (skip the rest of these steps and check other targets before bouncing back the move)
  • Check each target for Magic Bounce (skip the rest of these steps and check other targets before bouncing back the move)
  • Check each target for Dry Skin / Flash Fire / Lightning Rod / Motor Drive / Sap Sipper / Soundproof / Storm Drain / Telepathy / Volt Absorb / Water Absorb / Wonder Guard
  • Check each target for type immunity (Thunder Wave is the only Status move that checks type immunities at this step)
  • Check each target for Levitate
  • Check each target for accuracy
  • Check each target for substitute
  • Check each target for status / powder immunity due to typing
  • Check each target for status / powder immunity due to Ability (Limber/Water Veil/Overcoat/Flower Veil/etc)
Footage of this, complete with several test cases can be seen at the beginning of this video.
 
A big discovery with Stomping Tantrum was discovered recently that I haven't seen anyone report on formally yet. If a spread move hits into a Protect and the other target of the spread move reaches a Stomping Tantrum condition for failure, then the following turn's Stomping Tantrum will be doubled. For example, using Precipice Blades into Levitate + Protect will double Stomping Tantrum, missing a Precipice Blades and landing into a Flying-type will double Stomping Tantrum, and using Earthquake into a Protect and two Flying-types will double Stomping Tantrum. This is presumably because of the rearrangement of checks done before a move can successfully hit a target in Generation 7 as documented by Marty:
Check for attack redirection by Follow Me / Lightning Rod / Storm Drain - Follow Me has priority
  • Check each target for Wide Guard / Quick Guard
  • Check each target for Protect / Detect
  • Check each target for Magic Coat (skip the rest of these steps and check other targets before bouncing back the move)
  • Check each target for Magic Bounce (skip the rest of these steps and check other targets before bouncing back the move)
  • Check each target for Dry Skin / Flash Fire / Lightning Rod / Motor Drive / Sap Sipper / Soundproof / Storm Drain / Telepathy / Volt Absorb / Water Absorb / Wonder Guard
  • Check each target for type immunity (Thunder Wave is the only Status move that checks type immunities at this step)
  • Check each target for Levitate
  • Check each target for accuracy
  • Check each target for substitute
  • Check each target for status / powder immunity due to typing
  • Check each target for status / powder immunity due to Ability (Limber/Water Veil/Overcoat/Flower Veil/etc)
Footage of this, complete with several test cases can be seen at the beginning of this video.
So to put it into simple words, Stomping Tantrum gets double damage as long as at least one target of the previous damaging move did not receive damage from the move, be it ally or enemy.

And if that one target was under Protect, it gets double damage anyways if the move would have failed to deal damage even without Protect.
 

DaWoblefet

Demonstrably so
is a Battle Simulator Administratoris a Community Leaderis a Programmeris a Community Contributoris a Top Researcheris a Top Tiering Contributoris a Social Media Contributor Alumnus
PS Admin
So to put it into simple words, Stomping Tantrum gets double damage as long as at least one target of the previous damaging move did not receive damage from the move, be it ally or enemy.

And if that one target was under Protect, it gets double damage anyways if the move would have failed to deal damage even without Protect.
No, Protect is a necessary condition. For example, we've seen before that missing just one target of a spread move isn't enough to double Stomping Tantrum; you've got to miss both. If you used Precipice Blades against the opponent with no Ground-type immunities, three cases could happen (with no Protects):
  1. You hit both targets
  2. You hit one target and miss the other
  3. You miss both targets
Stomping Tantrum will only double on the third condition, because it missed both. It wouldn't double Stomping Tantrum on the second case. However, if one Pokemon used Protect, there are only two cases now:
  1. You hit the target
  2. You miss the target
Missing here would be sufficient for Stomping Tantrum to receive doubled base power. The reason for this is because the game animates the Protects first, then it goes into its secondary checks for things like Levitate, accuracy, etc. The information I linked from Marty is helpful in this case to see the order of things. So something like using Precipice Blades into Cresselia + hitting the other target will NOT double Stomping Tantrum either, but using Precipice Blades into Cresselia + a Protect WILL double Stomping Tantrum.
 

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

Top