Spaces:
Paused
Paused
| ; | |
| const assert = require('./../../assert'); | |
| const common = require('./../../common'); | |
| let battle; | |
| describe("Accuracy", () => { | |
| afterEach(() => { | |
| battle.destroy(); | |
| }); | |
| it(`should round half down when applying a modifier`, () => { | |
| battle = common.createBattle([ | |
| [{ species: 'Butterfree', ability: 'compoundeyes', moves: ['sleeppowder'] }], | |
| [{ species: 'Beldum', moves: ['poltergeist'] }], | |
| ]); | |
| battle.onEvent('Accuracy', battle.format, accuracy => { | |
| assert.equal(accuracy, 98, 'CompoundEyes Sleep Powder should be 98% accurate'); | |
| }); | |
| battle.makeChoices(); | |
| battle = common.createBattle([ | |
| [{ species: 'Butterfree', ability: 'victorystar', moves: ['fireblast'] }], | |
| [{ species: 'Regirock', moves: ['sleeptalk'] }], | |
| ]); | |
| battle.onEvent('Accuracy', battle.format, accuracy => { | |
| assert.equal(accuracy, 94, 'Victory Star Fire Blast should be 94% accurate'); | |
| }); | |
| battle.makeChoices(); | |
| battle = common.createBattle([ | |
| [{ species: 'Butterfree', item: 'widelens', moves: ['fireblast'] }], | |
| [{ species: 'Regirock', moves: ['sleeptalk'] }], | |
| ]); | |
| battle.onEvent('Accuracy', battle.format, accuracy => { | |
| assert.equal(accuracy, 93, 'Wide Lens Fire Blast should be 93% accurate'); | |
| }); | |
| battle.makeChoices(); | |
| }); | |
| it(`should chain modifiers in order of the Pokemon's raw speed`, () => { | |
| battle = common.createBattle({ gameType: 'doubles' }, [[ | |
| { species: 'Mewtwo', ability: 'victorystar', moves: ['gravity', 'sleeptalk', 'sandattack'] }, | |
| { species: 'Charizard', ability: 'compoundeyes', moves: ['sleeptalk', 'fireblast'] }, | |
| ], [ | |
| { species: 'Bonsly', ability: 'tangledfeet', moves: ['doubleteam', 'sleeptalk'] }, | |
| { species: 'Pyukumuku', ability: 'noguard', moves: ['confuseray', 'sandattack', 'sleeptalk'] }, | |
| ]]); | |
| battle.makeChoices('move sandattack -2, move sleeptalk', 'move doubleteam, move sandattack 2'); | |
| battle.makeChoices('auto', 'move sleeptalk, move confuseray -1'); | |
| battle.onEvent('Accuracy', battle.format, (accuracy, target, source, move) => { | |
| if (move.id !== 'fireblast') return; | |
| assert.equal(accuracy, 51); | |
| }); | |
| battle.makeChoices('move gravity, move fire blast 1', 'move sleeptalk, move sleeptalk'); | |
| // Changing the Pokemon's Speeds around changes the chaining order, which affects the result | |
| battle = common.createBattle({ gameType: 'doubles' }, [[ | |
| { species: 'Bonsly', ability: 'victorystar', moves: ['gravity', 'sleeptalk', 'sandattack'] }, | |
| { species: 'Charizard', ability: 'compoundeyes', moves: ['sleeptalk', 'fireblast'] }, | |
| ], [ | |
| { species: 'Mewtwo', ability: 'tangledfeet', moves: ['doubleteam', 'sleeptalk'] }, | |
| { species: 'Pyukumuku', ability: 'noguard', moves: ['confuseray', 'sandattack', 'sleeptalk'] }, | |
| ]]); | |
| battle.makeChoices('move sandattack -2, move sleeptalk', 'move doubleteam, move sandattack 2'); | |
| battle.makeChoices('auto', 'move sleeptalk, move confuseray -1'); | |
| battle.onEvent('Accuracy', battle.format, (accuracy, target, source, move) => { | |
| if (move.id !== 'fireblast') return; | |
| assert.equal(accuracy, 50); | |
| }); | |
| battle.makeChoices('move gravity, move fire blast 1', 'move sleeptalk, move sleeptalk'); | |
| }); | |
| }); | |