pokemon-showdown/test/sim/abilities/slowstart.js

53 lines
1.9 KiB
JavaScript

'use strict';
const assert = require('./../../assert');
const common = require('./../../common');
let battle;
describe(`Slow Start`, function () {
afterEach(function () {
battle.destroy();
});
it(`should not delay activation on switch-in, unlike Speed Boost`, function () {
battle = common.createBattle([[
{species: 'diglett', moves: ['sleeptalk']},
{species: 'regigigas', ability: 'slowstart', item: 'normaliumz', moves: ['sleeptalk']},
], [
{species: 'wynaut', moves: ['sleeptalk']},
]]);
battle.makeChoices('switch 2', 'auto');
for (let i = 0; i < 4; i++) { battle.makeChoices(); }
const log = battle.getDebugLog();
const slowStartEnd = log.indexOf('|-end|p1a: Regigigas|Slow Start');
assert(slowStartEnd > -1, 'Slow Start should end in 5 turns, including the turn it switched in.');
});
it(`[Gen 7] should halve the user's Special Attack when using a special Z-move`, function () {
battle = common.gen(7).createBattle([[
{species: 'regigigas', ability: 'slowstart', item: 'normaliumz', moves: ['hyperbeam']},
], [
{species: 'wynaut', ability: 'shellarmor', moves: ['sleeptalk']},
]]);
battle.makeChoices('move hyperbeam zmove', 'auto');
const wynaut = battle.p2.active[0];
const damage = wynaut.maxhp - wynaut.hp;
assert.bounded(damage, [160, 189]);
});
it(`[Gen 7] should not halve the user's Attack when using physical Photon Geyser`, function () {
// We are using Photon Geyser through Assist, because otherwise Photon Geyser would just ignore Slow Start
battle = common.gen(7).createBattle([[
{species: 'regigigas', ability: 'slowstart', moves: ['assist']},
{species: 'necrozma', moves: ['photongeyser']},
], [
{species: 'wynaut', ability: 'shellarmor', moves: ['sleeptalk']},
]]);
battle.makeChoices();
const wynaut = battle.p2.active[0];
const damage = wynaut.maxhp - wynaut.hp;
assert.bounded(damage, [96, 114]);
});
});