Pokemon_server / test /sim /misc /partnersincrime.js
Jofthomas's picture
Jofthomas HF staff
Upload 4781 files
5c2ed06 verified
'use strict';
const assert = require('./../../assert');
const common = require('./../../common');
let battle;
describe('Partners in Crime', () => {
afterEach(() => battle.destroy());
it('should activate shared abilities at the same time as other abilities', () => {
battle = common.createBattle({ formatid: 'gen9partnersincrime' }, [[
{ species: 'Incineroar', ability: 'intimidate', item: 'whiteherb', moves: ['sleeptalk'] },
{ species: 'Pincurchin', ability: 'electricsurge', moves: ['sleeptalk'] },
], [
{ species: 'Rampardos', ability: 'sheerforce', moves: ['sleeptalk'] },
{ species: 'Iron Valiant', ability: 'quarkdrive', moves: ['sleeptalk'] },
{ species: 'Litten', ability: 'intimidate', moves: ['sleeptalk'] },
]]);
// team preview
battle.makeChoices();
const rampardos = battle.p2.active[0];
assert.statStage(rampardos, 'atk', -2);
assert.equal(rampardos.volatiles.quarkdrive.bestStat, 'atk',
`Rampardos should be Intimidated exactly once before Quark Drive activates`);
const ironvaliant = battle.p2.active[1];
assert.statStage(ironvaliant, 'atk', -2);
assert.equal(ironvaliant.volatiles.quarkdrive.bestStat, 'spa',
`Iron Valiant should be Intimidated exactly once before Quark Drive activates`);
assert.equal(battle.field.terrainState.source.name, 'Incineroar', `Incineroar should set Electric Terrain`);
battle.makeChoices('auto', 'move sleeptalk, switch 3');
const incineroar = battle.p1.active[0];
assert.false.holdsItem(incineroar);
assert.statStage(incineroar, 'atk', 0, `Incineroar's White Herb should have activated after both Litten and Rampardos's Intimidates`);
});
it('should activate shared abilities for each ally when only the original holder switches in', () => {
battle = common.createBattle({ formatid: 'gen9partnersincrime' }, [[
{ species: 'Pyukumuku', ability: 'innardsout', moves: ['sleeptalk'] },
{ species: 'Pincurchin', ability: 'electricsurge', moves: ['sleeptalk'] },
{ species: 'Incineroar', ability: 'intimidate', moves: ['sleeptalk'] },
], [
{ species: 'Corviknight', ability: 'mirrorarmor', moves: ['sleeptalk'] },
{ species: 'Iron Valiant', ability: 'quarkdrive', moves: ['sleeptalk'] },
]]);
// team preview
battle.makeChoices();
// swap Pyukumuku for Incineroar
battle.makeChoices('switch 3, move sleeptalk', 'auto');
const pincurchin = battle.p1.active[1];
assert.statStage(pincurchin, 'atk', -2, 'Pincurchin should have had its innate Intimidate activate, triggering Mirror Armor');
});
it('should not activate ally\'s innates if the partner faints on switch-in', () => {
battle = common.createBattle({ formatid: 'gen9partnersincrime' }, [[
{ species: 'Shedinja', ability: 'download', moves: ['sleeptalk'] },
{ species: 'Cresselia', ability: 'levitate', moves: ['sleeptalk'] },
{ species: 'Chansey', ability: 'healer', moves: ['sleeptalk'] },
], [
{ species: 'Stonjourner', ability: 'powerspot', moves: ['stealthrock'] },
{ species: 'Iron Hands', ability: 'quarkdrive', moves: ['sleeptalk'] },
]]);
battle.makeChoices();
const cresselia = battle.p1.active[1];
assert.statStage(cresselia, 'spa', 1);
battle.makeChoices('switch 3, move sleeptalk', 'auto');
battle.makeChoices('switch 3, move sleeptalk', 'auto');
assert.statStage(cresselia, 'spa', 1, 'Cresselia should not have gained another Download boost after Shedinja fainted');
});
});