pokemon-showdown/test/sim/abilities/trace.js
2020-11-03 10:31:11 -05:00

54 lines
1.9 KiB
JavaScript

'use strict';
const assert = require('./../../assert');
const common = require('./../../common');
let battle;
describe('Trace', function () {
afterEach(function () {
battle.destroy();
});
// see research: https://www.smogon.com/forums/threads/pokemon-sun-moon-battle-mechanics-research.3586701/post-7790209
it(`should interact properly with Ability index 0 'No Ability'`, function () {
// Trace stops working if it initially finds 'No Ability'
battle = common.createBattle({gameType: 'doubles'}, [[
{species: "Ralts", ability: 'trace', moves: ['sleeptalk']},
{species: "Bouffalant", ability: 'sapsipper', moves: ['sleeptalk']},
], [
{species: "Wynaut", ability: 'noability', moves: ['sleeptalk']},
{species: "Wynaut", ability: 'unburden', moves: ['sleeptalk']},
{species: "Wynaut", ability: 'triage', moves: ['sleeptalk']},
]]);
battle.makeChoices();
let ralts = battle.p1.active[0];
assert.equal(ralts.ability, 'trace');
battle.makeChoices('auto', 'switch 3, move sleeptalk');
assert.equal(ralts.ability, 'trace');
// Trace will continue if it checks later on if it can take 'No Ability'
battle = common.createBattle({gameType: 'doubles'}, [[
{species: "Ralts", ability: 'trace', moves: ['sleeptalk']},
{species: "Bouffalant", ability: 'sapsipper', moves: ['sleeptalk']},
], [
{species: "Wynaut", ability: 'stancechange', moves: ['sleeptalk']},
{species: "Wynaut", ability: 'stancechange', moves: ['sleeptalk']},
{species: "Wynaut", ability: 'noability', moves: ['sleeptalk']},
{species: "Wynaut", ability: 'unburden', moves: ['sleeptalk']},
]]);
battle.makeChoices();
ralts = battle.p1.active[0];
assert.equal(ralts.ability, 'trace');
battle.makeChoices('auto', 'switch 3, move sleeptalk');
assert.equal(ralts.ability, 'trace');
battle.makeChoices('auto', 'switch 4, move sleeptalk');
assert.equal(ralts.ability, 'unburden');
});
});