mirror of
https://github.com/smogon/pokemon-showdown.git
synced 2026-08-28 12:04:28 -05:00
* Add AbilityFlags interface * Add flags to abilities data (Karthik's script) * Convert isBreakable to its new flag * Convert most of isPermanent to its new flag * Convert Trace to its new flag * Convert Skill Swap to its new flag * Convert Wandering Spirit to the failskillswap flag * Update miscelleneous descriptions that depend on cantsuppress * Convert Entrainment to its flag * Convert Receiver/PoA to its flag * Convert Role Play to its flag * Implement Doodle failure conditions * Various cleanup * Breakable fixes * How did I manage to do this * Allow LightningRod to be breakable in Gen 3 * Implement notransform flag * Tera Shell oopsie * Fix more things after the rebase * And fix Teraform Zero * Update data/abilities.ts * Update data/abilities.ts * Update data/abilities.ts * Update data/mods/partnersincrime/abilities.ts * Update data/abilities.ts * Update data/mods/sharedpower/abilities.ts * Update abilities.ts --------- Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com>
86 lines
2.9 KiB
JavaScript
86 lines
2.9 KiB
JavaScript
'use strict';
|
|
|
|
const assert = require('./../../assert');
|
|
const common = require('./../../common');
|
|
|
|
let battle;
|
|
|
|
describe('Trace', function () {
|
|
afterEach(function () {
|
|
battle.destroy();
|
|
});
|
|
|
|
it(`should copy the opponent's Ability`, function () {
|
|
battle = common.createBattle([[
|
|
{species: "Ralts", ability: 'trace', moves: ['sleeptalk']},
|
|
], [
|
|
{species: "Wynaut", ability: 'shadowtag', moves: ['sleeptalk']},
|
|
]]);
|
|
|
|
battle.makeChoices();
|
|
const ralts = battle.p1.active[0];
|
|
assert.equal(ralts.ability, 'shadowtag');
|
|
});
|
|
|
|
it(`should delay copying the opponent's Ability if the initial Abilities could not be copied by Trace`, function () {
|
|
battle = common.createBattle([[
|
|
{species: "Ralts", ability: 'trace', moves: ['sleeptalk']},
|
|
], [
|
|
{species: "Arceus", ability: 'multitype', moves: ['sleeptalk']},
|
|
{species: "Aegislash", ability: 'stancechange', moves: ['sleeptalk']},
|
|
{species: "Wynaut", ability: 'shadowtag', moves: ['sleeptalk']},
|
|
]]);
|
|
|
|
battle.makeChoices();
|
|
const ralts = battle.p1.active[0];
|
|
assert.equal(ralts.ability, 'trace');
|
|
|
|
battle.makeChoices('auto', 'switch 2');
|
|
assert.equal(ralts.ability, 'trace');
|
|
|
|
battle.makeChoices('auto', 'switch 3');
|
|
assert.equal(ralts.ability, 'shadowtag');
|
|
});
|
|
|
|
// 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');
|
|
});
|
|
});
|