'use strict'; const assert = require('./../../assert'); const common = require('./../../common'); let battle; describe('Arena Trap', () => { afterEach(() => { battle.destroy(); }); it('should prevent grounded Pokemon that are not immune to trapping from switching out normally', function () { this.timeout(0); battle = common.createBattle([[ { species: "Dugtrio", ability: 'arenatrap', moves: ['snore', 'telekinesis', 'gravity'] }, ], [ { species: "Tornadus", ability: 'defiant', moves: ['tailwind'] }, { species: "Heatran", ability: 'flashfire', item: 'airballoon', moves: ['roar'] }, { species: "Claydol", ability: 'levitate', moves: ['rest'] }, { species: "Dusknoir", ability: 'frisk', moves: ['rest'] }, { species: "Magnezone", ability: 'magnetpull', moves: ['magnetrise'] }, { species: "Vaporeon", ability: 'waterabsorb', moves: ['roar'] }, ]]); const p2active = battle.p2.active; battle.makeChoices('move snore', 'switch 2'); assert.species(p2active[0], 'Heatran'); battle.makeChoices('move snore', 'switch 3'); assert.species(p2active[0], 'Claydol'); battle.makeChoices('move snore', 'switch 4'); assert.species(p2active[0], 'Dusknoir'); battle.makeChoices('move snore', 'switch 5'); assert.species(p2active[0], 'Magnezone'); assert.trapped(() => battle.makeChoices('', 'switch 6'), true); assert.species(p2active[0], 'Magnezone'); // Magnezone is trapped assert.equal(p2active[0].name, "Magnezone"); battle.makeChoices('default', 'move magnetrise'); battle.makeChoices('move snore', 'switch 6'); assert.species(p2active[0], 'Vaporeon'); assert.trapped(() => battle.makeChoices('default', 'switch 2'), true); // Vaporeon is trapped assert.species(p2active[0], 'Vaporeon'); battle.makeChoices('move telekinesis', 'default'); // Telekinesis battle.makeChoices('move snore', 'switch 2'); assert.species(p2active[0], 'Tornadus'); battle.makeChoices('move gravity', 'default'); // Gravity assert.trapped(() => battle.makeChoices('', 'switch 4'), true); // Tornadus is trapped assert.species(p2active[0], 'Tornadus'); }); });