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

80 lines
2.8 KiB
JavaScript

'use strict';
const assert = require('./../../assert');
const common = require('./../../common');
let battle;
describe('Lash Out', function () {
afterEach(function () {
battle.destroy();
});
it(`should double in base power if the user's stats were lowered this turn`, function () {
battle = common.createBattle([[
{species: 'Wynaut', moves: ['lashout']},
], [
{species: 'Blissey', moves: ['faketears']},
]]);
battle.makeChoices();
const blissey = battle.p2.active[0];
const damage = blissey.maxhp - blissey.hp;
assert.bounded(damage, [158, 186]); // If it wasn't doubled, range would be 79-94
});
it(`should double in base power if the user's stats were lowered this turn by an ally`, function () {
battle = common.createBattle({gameType: 'doubles'}, [[
{species: 'Wynaut', moves: ['lashout']},
{species: 'Blissey', moves: ['faketears']},
], [
{species: 'Tyrogue', moves: ['sleeptalk']},
{species: 'Tyrogue', moves: ['sleeptalk']},
]]);
battle.makeChoices('move lashout -2, move faketears -1', 'auto');
const blissey = battle.p1.active[1];
const damage = blissey.maxhp - blissey.hp;
assert.bounded(damage, [158, 186]); // If it wasn't doubled, range would be 79-94
});
it(`should double in base power if the user's stats were lowered at the start of the match`, function () {
battle = common.createBattle([[
{species: 'Wynaut', ability: 'shellarmor', moves: ['lashout']},
], [
{species: 'Blissey', ability: 'intimidate', moves: ['skillswap']},
]]);
battle.makeChoices();
const blissey = battle.p2.active[0];
const damage = blissey.maxhp - blissey.hp;
assert.bounded(damage, [104, 123]); // If it wasn't doubled, range would be 52-62
});
it(`should not double in base power if the user's stats were lowered at a switch after a KO`, function () {
battle = common.createBattle([[
{species: 'Wynaut', ability: 'shellarmor', moves: ['lashout']},
], [
{species: 'Shedinja', moves: ['sleeptalk']},
{species: 'Blissey', ability: 'intimidate', moves: ['skillswap']},
]]);
battle.makeChoices();
battle.makeChoices();
battle.makeChoices();
const blissey = battle.p2.active[0];
const damage = blissey.maxhp - blissey.hp;
assert.bounded(damage, [52, 62]); // If it was doubled, range would be 104-123
});
it(`should double in base power even if stat resets are reset by Haze`, function () {
battle = common.createBattle({gameType: 'doubles'}, [[
{species: 'Wynaut', moves: ['lashout']},
{species: 'Blissey', moves: ['faketears']},
], [
{species: 'Tyrogue', moves: ['haze']},
{species: 'Tyrogue', moves: ['sleeptalk']},
]]);
battle.makeChoices('move lashout -2, move faketears -1', 'auto');
const blissey = battle.p1.active[1];
const damage = blissey.maxhp - blissey.hp;
assert.bounded(damage, [158, 186]); // If it wasn't doubled, range would be 79-94
});
});