pokemon-showdown/test/sim/moves/stompingtantrum.js
TurboRx 7a55285dd1
Fix Stomping Tantrum incorrectly doubling after canceled two-turn moves (#11760)
* fix stomping tantrum not doubling when fly is canceled by smack down

* Update sim/battle-actions.ts

Co-authored-by: André Bastos Dias <80102738+andrebastosdias@users.noreply.github.com>

---------

Co-authored-by: TurboRx <TurboRx@users.noreply.github.com>
Co-authored-by: André Bastos Dias <80102738+andrebastosdias@users.noreply.github.com>
2026-02-13 09:57:20 -07:00

211 lines
7.8 KiB
JavaScript

'use strict';
const assert = require('./../../assert');
const common = require('./../../common');
let battle;
describe('Stomping Tantrum', () => {
afterEach(() => {
battle.destroy();
});
it(`should double its Base Power if the last move used on the previous turn failed`, () => {
battle = common.createBattle([[
{ species: 'Marowak', moves: ['attract', 'spore', 'stompingtantrum'] },
], [
{ species: 'Manaphy', moves: ['rest'] },
]]);
battle.onEvent('BasePower', battle.format, basePower => {
assert.equal(basePower, 150);
});
battle.makeChoices('move attract', 'move rest'); // Manaphy is genderless, so Attract fails
battle.makeChoices('move stompingtantrum', 'move rest');
battle.makeChoices('move spore', 'move rest'); // Manaphy is now asleep, so Spore fails
battle.makeChoices('move stompingtantrum', 'move rest');
});
it(`should not double its Base Power if the last move used on the previous turn hit Protect`, () => {
battle = common.createBattle([[
{ species: 'Marowak', moves: ['stompingtantrum'] },
], [
{ species: 'Manaphy', moves: ['protect', 'sleeptalk'] },
]]);
battle.onEvent('BasePower', battle.format, basePower => {
assert.equal(basePower, 75);
});
battle.makeChoices('move stompingtantrum', 'move protect');
battle.makeChoices('move stompingtantrum', 'move sleeptalk');
});
it(`should double its Base Power if the last move used was a spread move that partially hit Protect and otherwise failed`, () => {
battle = common.createBattle({ gameType: 'doubles' }, [[
{ species: 'Cresselia', moves: ['sunnyday'] },
{ species: 'Groudon', ability: 'noguard', moves: ['stompingtantrum', 'precipiceblades'] },
], [
{ species: 'Tapu Lele', moves: ['protect', 'calmmind'] },
{ species: 'Ho-Oh', moves: ['recover'] },
]]);
battle.onEvent('BasePower', battle.format, (basePower, attacker, defender, move) => {
if (move.id === 'stompingtantrum') assert.equal(basePower, 150);
});
battle.makeChoices('move sunnyday, move precipiceblades', 'move protect, move recover');
battle.makeChoices('move sunnyday, move stompingtantrum 1', 'move calmmind, move recover');
});
it(`should not double its Base Power if the last move used on the previous turn was a successful Celebrate`, () => {
battle = common.createBattle([[
{ species: 'Snorlax', moves: ['celebrate', 'stompingtantrum'] },
], [
{ species: 'Manaphy', moves: ['sleeptalk'] },
]]);
battle.onEvent('BasePower', battle.format, basePower => {
assert.equal(basePower, 75);
});
battle.makeChoices('move celebrate', 'auto');
battle.makeChoices('move stompingtantrum', 'auto');
});
it(`should not double its Base Power if the last "move" used on the previous turn was a recharge`, () => {
battle = common.createBattle([[
{ species: 'Marowak-Alola', ability: 'noguard', moves: ['stompingtantrum', 'hyperbeam'] },
], [
{ species: 'Lycanroc-Midnight', moves: ['sleeptalk'] },
]]);
battle.onEvent('BasePower', battle.format, (basePower, pokemon, target, move) => {
if (move.id === 'stompingtantrum') assert.equal(basePower, 75);
});
battle.makeChoices('move hyperbeam', 'auto');
battle.makeChoices('move recharge', 'auto');
battle.makeChoices('move stompingtantrum', 'auto');
});
it(`should not double its Base Power if the user dropped mid-Fly due to Smack Down`, () => {
battle = common.createBattle([[
{ species: 'Magikarp', moves: ['fly', 'stompingtantrum'] },
], [
{ species: 'Wynaut', moves: ['smackdown'] },
]]);
battle.onEvent('BasePower', battle.format, (basePower, pokemon, target, move) => {
if (move.id === 'stompingtantrum') assert.equal(basePower, 75);
});
battle.makeChoices();
battle.makeChoices('move stompingtantrum', 'auto');
});
it(`should double its Base Power if a two-turn move fails for a different reason`, () => {
battle = common.createBattle([[
{ species: 'Magikarp', moves: ['dive', 'stompingtantrum'] },
], [
{ species: 'Wynaut', ability: 'waterabsorb', moves: ['splash'] },
]]);
battle.onEvent('BasePower', battle.format, (basePower, pokemon, target, move) => {
if (move.id === 'stompingtantrum') assert.equal(basePower, 150);
});
battle.makeChoices();
battle.makeChoices();
battle.makeChoices('move stompingtantrum', 'auto');
});
it(`should double its Base Power on some failure conditions of Rest`, () => {
battle = common.createBattle([[
{ species: 'Magikarp', ability: 'comatose', moves: ['rest', 'stompingtantrum'] },
{ species: 'Feebas', ability: 'insomnia', moves: ['rest', 'stompingtantrum'] },
], [
{ species: 'Accelgor', moves: ['sleeptalk', 'nightshade'] },
]]);
battle.onEvent('BasePower', battle.format, (basePower, pokemon, target, move) => {
if (move.id === 'stompingtantrum') assert.equal(basePower, 150);
});
battle.makeChoices('move rest', 'auto'); // Rest while user already asleep or Comatose
battle.makeChoices('move stompingtantrum', 'auto');
battle.makeChoices('switch 2', 'auto');
battle.makeChoices('move rest', 'auto'); // Rest while user at full HP
battle.makeChoices('move stompingtantrum', 'auto');
battle.makeChoices('move rest', 'move nightshade'); // Rest while has Insomnia
battle.makeChoices('move stompingtantrum', 'auto');
});
it.skip(`should not double its Base Power on other failure conditions of Rest`, () => {
battle = common.createBattle([[
{ species: 'Magikarp', moves: ['rest', 'stompingtantrum', 'defog'] },
], [
{ species: 'Accelgor', moves: ['sleeptalk', 'nightshade', 'electricterrain', 'mistyterrain'] },
]]);
battle.onEvent('BasePower', battle.format, (basePower, pokemon, target, move) => {
if (move.id === 'stompingtantrum') assert.equal(basePower, 75);
});
battle.makeChoices('move rest', 'move electricterrain');
battle.makeChoices('move rest', 'move nightshade'); // Rest in Electric Terrain
battle.makeChoices('move stompingtantrum', 'auto');
battle.makeChoices('move rest', 'move mistyterrain'); // Rest in Misty Terrain
battle.makeChoices('move stompingtantrum', 'auto');
battle.makeChoices('move defog', 'auto');
battle.makeChoices('move rest', 'move uproar'); // Rest in Uproar
battle.makeChoices('move stompingtantrum', 'auto');
});
it.skip(`should not double its Base Power on most failed healing effects`, () => {
battle = common.createBattle({ gameType: 'doubles' }, [[
{ species: 'Magikarp', moves: ['roost', 'lifedew', 'healpulse', 'stompingtantrum'] },
{ species: 'Feebas', moves: ['shoreup', 'junglehealing', 'pollenpuff', 'stompingtantrum'] },
], [
{ species: 'Accelgor', moves: ['sleeptalk'] },
{ species: 'Accelgor', moves: ['sleeptalk'] },
]]);
battle.onEvent('BasePower', battle.format, (basePower, pokemon, target, move) => {
if (move.id === 'stompingtantrum') assert.equal(basePower, 75);
});
battle.makeChoices('move roost, move shoreup', 'auto');
battle.makeChoices('move stompingtantrum 1, move stompingtantrum 1', 'auto');
battle.makeChoices('move lifedew, move junglehealing', 'auto');
battle.makeChoices('move stompingtantrum 1, move stompingtantrum 1', 'auto');
battle.makeChoices('move healpulse -2, move pollenpuff -1', 'auto');
battle.makeChoices('move stompingtantrum 1, move stompingtantrum 1', 'auto');
});
it(`should cause Gravity-negated moves to double in BP, even Z-moves`, () => {
battle = common.gen(7).createBattle([[
{ species: "Magikarp", item: 'normaliumz', moves: ['splash', 'stompingtantrum'] },
], [
{ species: "Accelgor", moves: ['gravity'] },
]]);
battle.onEvent('BasePower', battle.format, (basePower, pokemon, target, move) => {
if (move.id === 'stompingtantrum') assert.equal(basePower, 150);
});
battle.makeChoices('move splash', 'move gravity');
battle.makeChoices('move stomping tantrum', 'move gravity');
battle.makeChoices('move splash zmove', 'move gravity');
battle.makeChoices('move stomping tantrum', 'move gravity');
});
});