pokemon-showdown/test/sim/moves/perishsong.js

66 lines
2.2 KiB
JavaScript

'use strict';
const assert = require('./../../assert');
const common = require('./../../common');
let battle;
describe('Perish Song', function () {
afterEach(function () {
battle.destroy();
});
it(`should KO all Pokemon that heard it in 3 turns`, function () {
battle = common.createBattle({gameType: 'doubles'}, [[
{species: "Primarina", moves: ['perishsong', 'moonblast']},
{species: "Magikarp", moves: ['splash']},
], [
{species: "Magikarp", moves: ['splash']},
{species: "Magikarp", moves: ['splash']},
]]);
battle.makeChoices('move perishsong, move splash', 'auto');
// We've had a crash related to fainted Pokemon and Perish Song
battle.makeChoices('move moonblast 1, move splash', 'auto');
battle.makeChoices();
battle.makeChoices();
for (const active of battle.getAllActive()) {
assert.fainted(active);
}
});
it(`should cause Pokemon to faint by order of Speed`, function () {
battle = common.createBattle([[
{species: 'Weavile', moves: ['perishsong']},
], [
{species: 'Slowpoke', moves: ['sleeptalk']},
]]);
for (let i = 0; i < 4; i++) { battle.makeChoices(); }
assert.equal(battle.winner, 'Player 2');
});
it(`should not affect other Pokemon with the ability Soundproof`, function () {
battle = common.createBattle([[
{species: 'Weavile', ability: 'soundproof', moves: ['perishsong']},
], [
{species: 'Slowpoke', ability: 'soundproof', moves: ['sleeptalk']},
]]);
battle.makeChoices();
assert(battle.p1.active[0].volatiles['perishsong'], 'Weavile should have been affected by its own Perish Song');
assert.false(battle.p2.active[0].volatiles['perishsong'], 'Slowpoke should not have been affected by Perish Song');
});
it(`should not affect any Pokemon with the ability Soundproof in Gen 7`, function () {
battle = common.gen(7).createBattle([[
{species: 'Weavile', ability: 'soundproof', moves: ['perishsong']},
], [
{species: 'Slowpoke', ability: 'soundproof', moves: ['sleeptalk']},
]]);
battle.makeChoices();
assert.false(battle.p1.active[0].volatiles['perishsong'], 'Weavile should not have been affected by Perish Song');
assert.false(battle.p2.active[0].volatiles['perishsong'], 'Slowpoke should not have been affected by Perish Song');
});
});