'use strict'; const assert = require('./../../assert'); const common = require('./../../common'); let battle; describe('Eject Pack', function () { afterEach(function () { battle.destroy(); }); it('should cause a switch-out after Moody activation', function () { battle = common.createBattle(); battle.setPlayer('p1', {team: [ {species: 'Glalie', ability: 'moody', item: 'ejectpack', moves: ['protect']}, {species: 'Mew', ability: 'noability', moves: ['protect']}, ]}); battle.setPlayer('p2', {team: [ {species: 'Mew', ability: 'noability', moves: ['protect']}, ]}); battle.makeChoices(); assert.equal(battle.requestState, 'switch'); }); it("should switch out the holder when its stats are lowered", function () { battle = common.createBattle(); battle.setPlayer('p1', {team: [ {species: 'Machop', ability: 'noguard', moves: ['leer']}, ]}); battle.setPlayer('p2', {team: [ {species: 'Magikarp', item: 'ejectpack', moves: ['splash']}, {species: 'Mew', moves: ['splash']}, ]}); battle.makeChoices(); assert.equal(battle.p2.requestState, 'switch'); }); it.skip("should not trigger until after all entrance abilities have resolved during simultaneous switches", function () { battle = common.createBattle({gameType: 'doubles'}, [[ {species: 'Hydreigon', ability: 'intimidate', moves: ['sleeptalk']}, {species: 'Wynaut', moves: ['sleeptalk']}, ], [ {species: 'Morelull', ability: 'drought', item: 'ejectpack', moves: ['sleeptalk']}, {species: 'Mew', level: 1, ability: 'electricsurge', moves: ['sleeptalk']}, {species: 'Wynaut', moves: ['sleeptalk']}, {species: 'Wynaut', moves: ['sleeptalk']}, ]]); battle.makeChoices(); assert(battle.field.isWeather('sunnyday')); assert(battle.field.isTerrain('electricterrain')); assert.equal(battle.p2.requestState, 'switch'); }); it.skip("should only trigger the fastest Eject Pack when multiple targets with Eject Pack have stats lowered", function () { battle = common.createBattle({gameType: 'doubles'}, [[ {species: 'Hydreigon', moves: ['leer']}, {species: 'Wynaut', moves: ['sleeptalk']}, ], [ {species: 'Morelull', item: 'ejectpack', moves: ['sleeptalk']}, {species: 'Mew', item: 'ejectpack', moves: ['sleeptalk']}, {species: 'Wynaut', moves: ['sleeptalk']}, {species: 'Wynaut', moves: ['sleeptalk']}, ]]); battle.makeChoices('move leer, move sleeptalk', 'move sleeptalk, move sleeptalk'); battle.makeChoices(); assert.species(battle.p2.active[0], "Morelull"); assert.species(battle.p2.active[1], "Wynaut"); }); it("should cause Pokemon to switch out during the semi-invulernable state", function () { battle = common.createBattle([[ {species: 'Charmeleon', item: 'ejectpack', moves: ['phantomforce']}, {species: 'Wynaut', moves: ['sleeptalk']}, ], [ {species: 'Wynaut', moves: ['sleeptalk']}, {species: 'Arcanine', ability: 'intimidate', moves: ['sleeptalk']}, ]]); battle.makeChoices('move phantomforce', 'move sleeptalk'); battle.makeChoices('move phantomforce', 'switch 2'); assert.equal(battle.p1.requestState, 'switch'); }); });