'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]); }); });