Spaces:
Running
Running
; | |
const assert = require('./../../assert'); | |
const common = require('./../../common'); | |
let battle; | |
describe('Costar', () => { | |
afterEach(() => { | |
battle.destroy(); | |
}); | |
it('should copy the teammate\'s crit ratio on activation', () => { | |
battle = common.createBattle({ gameType: 'doubles' }); | |
battle.setPlayer('p1', { team: [ | |
{ species: 'Smeargle', level: 1, moves: ['sleeptalk', 'focusenergy'] }, | |
{ species: 'Suicune', level: 1, moves: ['sleeptalk'] }, | |
{ species: 'Flamigo', level: 1, ability: 'costar', moves: ['sleeptalk'] }, | |
] }); | |
battle.setPlayer('p2', { team: [ | |
{ species: 'Suicune', level: 1, moves: ['sleeptalk'] }, | |
{ species: 'pikachu', level: 1, moves: ['sleeptalk'] }, | |
{ species: 'weezinggalar', level: 1, ability: 'neutralizinggas', moves: ['sleeptalk'] }, | |
] }); | |
battle.makeChoices('move focusenergy, move sleeptalk', 'move sleeptalk, move sleeptalk'); | |
battle.makeChoices('move sleeptalk, switch flamigo', 'move sleeptalk, move sleeptalk'); | |
const flamigo = battle.p1.active[1]; | |
assert(flamigo.volatiles['focusenergy'], "Costar should copy volatile crit modifiers."); | |
battle.makeChoices('switch suicune, move sleeptalk', 'switch weezinggalar, move sleeptalk'); | |
battle.makeChoices('move sleeptalk, move sleeptalk', 'switch suicune, move sleeptalk'); | |
assert(!flamigo.volatiles['focusenergy'], "Costar should copy having no volatile crit modifiers when re-activated."); | |
}); | |
it('should copy both positive and negative stat changes', () => { | |
battle = common.createBattle({ gameType: 'doubles' }); | |
battle.setPlayer('p1', { team: [ | |
{ species: 'Suicune', level: 1, moves: ['sleeptalk'] }, | |
{ species: 'Smeargle', level: 1, moves: ['sleeptalk', 'shellsmash'] }, | |
{ species: 'Flamigo', level: 1, ability: 'costar', moves: ['sleeptalk'] }, | |
] }); | |
battle.setPlayer('p2', { team: [ | |
{ species: 'Suicune', level: 1, moves: ['sleeptalk'] }, | |
{ species: 'Suicune', level: 1, moves: ['sleeptalk'] }, | |
] }); | |
battle.makeChoices('move sleeptalk, move shellsmash', 'move sleeptalk, move sleeptalk'); | |
battle.makeChoices('switch flamigo, move sleeptalk', 'move sleeptalk, move sleeptalk'); | |
const flamigo = battle.p1.active[0]; | |
assert.statStage(flamigo, 'atk', 2, "A pokemon should copy the target's positive stat changes (atk) when switching in with Costar."); | |
assert.statStage(flamigo, 'spa', 2, "A pokemon should copy the target's positive stat changes (spa) when switching in with Costar."); | |
assert.statStage(flamigo, 'spe', 2, "A pokemon should copy the target's positive stat changes (spe) when switching in with Costar."); | |
assert.statStage(flamigo, 'def', -1, "A pokemon should copy the target's negative stat changes (def) when switching in with Costar."); | |
assert.statStage(flamigo, 'spd', -1, "A pokemon should copy the target's negative stat changes (spd) when switching in with Costar."); | |
}); | |
it('should always activate later than Intimidate during simultaneous switch-ins', () => { | |
battle = common.createBattle({ gameType: 'doubles' }, [[ | |
{ species: 'flamigo', ability: 'costar', moves: ['sleeptalk'] }, | |
{ species: 'registeel', ability: 'clearbody', moves: ['sleeptalk'] }, | |
], [ | |
{ species: 'litten', ability: 'intimidate', moves: ['sleeptalk'] }, | |
{ species: 'dipplin', ability: 'supersweetsyrup', moves: ['sleeptalk'] }, | |
]]); | |
const flamigo = battle.p1.active[0]; | |
assert.statStage(flamigo, 'atk', 0); | |
assert.statStage(flamigo, 'evasion', 0); | |
}); | |
}); | |